How the JVM SHOULD be distributed (interesting)

Well I sent this document to the JCP maybe it will be better off there....
Sun needs a new JAVA marketing strategy.
Opinions expressed here are of my own, Matt Prokes, remember these are only opinions about what should or could be.
If you have ?'s contact me at [email protected]
What Java's Problem Is:
As far as I can see the only problem that java has these days is the client inconsistencys, this is due to Microsoft and there attempted dustruction of the HUGE java language, and Microsoft has succeeded wonderfully thus far, which is sad. I feel it is only due to the way Sun markets Java, not that they have not tried but they are going about it the wrong way.
Sun Feels They Are Being Oppressed:
It seems to me that Sun has a feeling of being oppressed by Microsoft, they see the company inflicting standards on the computing world that are self centered and platform specific, this is why java was created, to break that mold and it does it wonderfully but java has not gained populatiry because of marketing technique, no, it has gained popularity because it REALLY is what it is cracked up to be....A better way of doing things....
That is why sun landed the title of being one the the most innovative companys today by the magazine �PC World� ranking 13th place while Microsoft landed 137th (i think).
Yet with all this technology sun does not try to inflict it's standards on the PC world, well you might think what about all those court cases, for instance the most recent that suggests that Sun wants to FORCE Microsoft to install their JVM. I think stuff like this just slows Sun down, as we learned with previous cases Microsoft is just to big to fight and if you do manage to win it will be 3-4 years later. If you think about it time is money, why waste time? Trying to leach off of Microsoft is NOT the way to inflict standards, infact it is one of the worst ways because by the time you would have won microsoft would have bullied the java enviroment to it's grave (umm .net). So you may ask how do we enforce standards without the help of microsoft, the answer is more simple than you may think yet for some reason it has not been thought of by Sun. So far this is what has brought microsoft to the top.
1.Great Software
2.Enforced Standards, and Implementation
3.Excellent Marketing
4.Protected Software (Ideas)
5.Industry Wide Support
Innovation is not on this list, Microsoft does not have a innovative bone in it's body at the moment, it just buys technology that it needs, and has flashy GUI's, and a huge amount of support in the software industry. This is why according to the magazine �PC World� microsoft ranks #137 in innovation while Sun sits at a satisfying ranking of #13.
What this means is that Sun just is more innovative, it has technology out there that could be used but it can't because we have clients with Version 1.3 Java software on their PC's, Either that or Propietary and NOT PLATFORM INDEPENDENT Microsoft JVM's which Microsoft will again start to distribute in 2004 on XP, this brings me to my first point, if we are going to have a platform independent language it needs to come from ONE POINT that will be implemented by all Manufactures (the W3C for instance). You may be thinking well how do you enforce the SUN JVM if microsoft does not pack it with windows? The answer is you do what most new companys do and that is goto the PC Vendors. I would like to point out that microsoft is for the most part ONLY a software company (aside from some of there PC products), but they do not build and distribute PC systems, thus microsoft does not control what can go on a PC, I would like to point out the growing Linux threat to windows, more particulary the linux based operating system (Lindows) recently lindows has aquired a deal with walmart to sell there operating system as a subsitute to windows, this worked out phenominaly and right now walmart cannot seem to keep enough of the pc's on the shelves (since they cost only about 199$). Case point linux has also grown enormously due to �Home Editions� of linux (Red Hat). The first point I would like to make is that Sun should be PAYING vendors to install the SUN JVM over the microsoft one, this takes care of a few of Sun's problems (Not as much industry support as microsoft, and upgrading the JVM) all this can be done for a measily 5-6 million a year and will reach about 70% of the PC sector, infact I am almost certain this is how microsoft started out.
One Of Java's Big Problems JVM Inconsistencys
Now if Sun locks 70% of the PC market that will already be a large boost for java, but the question is how to make the percentage grow to 100%... I would now like to point out the company Macromedia, macromedia products are phenominal, and have changed the way media is seen on the web, particularly the Flash product that macromedia sells, now at this moment macromedia has stated that >90% flash support exists on the web today and >70% is with the most current version of flash, as I see it infact flash is one of the most universally supported pieces of software even more so than microsoft, this is why you see flash movies on yahoo, cnet, amazon, and even MSN! So you may ask what made flash what it is today? Well as described before flash is supported and installed by PC vendors, and even if it is not you can bearly go any place on the web with out getting a message stating that you should upgrade to the most current version of flash, this is due to the wide support on the web..... Now on the other hand if I run a java applet and the applet was compiled with some new features that were not supported in version 1.3 (Swing for example) we will get an error message stating that the package cannot be found and the applet will not run...You do not get any messages to upgrade, no window prompts, nothing..which brings me to my next point the java compiler should include the code (a pre JVM 1.3 version & microsoft JVM compatiable) that will prompt you to install the most current version of Java you already see default loaders for swing, a plugin check should also be included in all programs to ensure that you have to most recent version, and if you do not then it will send you to the Sun Website, or display a update manager or something. Getting an error saying that the applet packages are not found does not help the user any it only frusterates them, you have to physically provide a remedy to the problem at hand. This should also check to see if the microsoft JVM is installed and if it is prompt to upgrade to the Sun JVM, this will pretty much distroy the use of the microsoft JVM.
This takes care of the enforcing standards part, braudens the Industry Wide Support, and protects the java enviroment, last but not least you need to promote the software, Java already does this excellently with webservices, and other things but there are more consumers than businesses and Java should also be concentrating more on the excellent 3d support that they have, the networking features of java, ect. Take OpenOffice.org for instance the product has grown emmensly since it has started and much uses Java API's, you would see much growth in Java if you provided other products like Open Office for free, for instance a Quake Like Multiplayer game in Java 3D distributed on an open source enviroment, in applet form (since applets are exclusivly a invention of Java), and then have a couple of servers set up that people can play for free on Sun's site, more networking app's for free, ect. You have to promote some of the more flashy features of Sun this way in order to see more growth and support and for free (learn from linux which is quickly becoming a HUGE threat for microsoft) if sun is making 13 billion a year I see no problem to them sporting a couple of servers with some USEFUL online apps/games/ect that sport how innovative java really is, and if they really need to they can have all the banners on stuff like the online games, take Http://www.runescape.com that sports an average of 10,000 users at any moment using the cross platform Java 3d API and they do it for free! All open source free products should be on Suns website, it shows how strong of a community Sun really is, instead of having it on some other website like www.openoffice.org that only sports Sun's name maybe a few times you might occasionally see a logo.. it would be better to maybe get open office from an address like www.openoffice.sun.com, maybe try a www.games.sun.com address or a www.apps.sun.com and then advertise the stuff that can be found at the Sun website. Sun should be proud to be open source, it is the only thing microsoft can't buy....
Opinions Of Matt Prokes..
[email protected]

Sun should be proud to be open source, it is the only thing microsoft
can't buy....Thats the only line of your whole pointless post that I read.
Since when is "sun" open source. I imagine you mean java. Java isn't open source, what makes you think it is? You can get the source for it and modify it to suit ur needs as per the license but this isn't really open source.. is it?
Anyway, don't waste space with your crap here, send an e-mail to somebody at sun instead, its just a waste posting this here.

Similar Messages

  • How the jvm assign thread to garbage collection

    hi,please answer this question
    How the jvm assign thread to garbage collection

    So let me get this straight, OP. You dump a load of homework questions on a bunch of total strangers, get a lot of replies, but the only time you bother to respond to that help is to insult someone? Did "thanks" ever occur to you?

  • How the DT should be for File sender

    Hi,
    I have a follwiing XML file and I need to create a data type. how would be the strcture of the DT should be?
    Req
    ...Type
    ...A
    ......Name
    ......City
    .../A
    ...B
    ......region
    .../B
    ....C
    ......Parameters
    ........parameter
    ..........name
    ..........value
    ........./parameter
    ........parameter
    ..........name
    ..........value
    ........./parameter
    ........parameter
    ..........name
    ..........value
    ........./parameter
    ........parameter
    ..........name
    ..........value
    ........./parameter
    ........parameter
    ..........name
    ..........value
    ........./parameter
    ......./Parameters
    ..../C
    /Req
    The follwing node is repeting... Do I need to create the DT same as the above strcuture?
    ........parameter
    ..........name
    ..........value
    ........./parameter
    Thanks
    Rajeev

    Have your Datatype format as shown below:
    Have the occurence accordingly....
    Looking at your requirement every node from Req to Parameters may have occurence as 0..1
    Parameter will have 0..unbounded
    Name and Value will again have 0..1
    Req
    ->Type
    -->A
    --->Name
    --->City
    -->B
    --->Region
    -->C
    --->Parameters
    >Parameter
    >Name
    >Value
    Regards,
    Abhishek.
    Edited by: abhishek salvi on Sep 1, 2009 7:31 PM

  • How the page should redirect when we click a link using sessions

    Hi Friends,
    I have two links namely Gujarati and English in the page. before logon to the application, when i click the Gujarati link, the total content of the page should change to Gujarati and for english as same..How to do this using sessions and Internationalization(i18n).
    It can be easy if anybody is using Property files and resourcebundle.
    Thank you..

    I will give u a very simple example of using session here.
    Lets say you have 2 links in your HTML or JSP page: Gujarati | English
    In you nextPage.jsp, you need to do the following:
    <%@ page session="true" %>
    By using page directive with session attribute to true will make HTTPSession implicit object available with you in your JSP.
    Now you can save your request parameter lang to this session for further identification of user's selection for the language.
    This is how it can be add user selected language into sessions in JSP:
    <%
    session.setAttribute("Language", request.getParameter("lang"));
    %>
    To retrieve this value for further usage, you can use the following:
    <%
    String lang = (String)session.getAttribute("Language");
    %>
    If you are using servlet instead of JSP, you can handle the same by having following lines of code in your servlet:
    To set a value or object in the session:
    HttpSession session = request.getSession();
    request.setAttribute("Language", request.getParameter("lang"));
    to retrieve a value or object from the session:
    HttpSession session = request.getSession();
    String language = (String)request.getAttribute("Language");
    I hope this helps to solve your problem for having selected language using sessions. Once you know which language the user has selected you can use internationalization to convert your pages to other languages.
    Choicest Regards
    Amit Singh Rathore

  • Hi Need information how the architecture should be

    Hi,
    I got a problem, I am working on Webservices here I am deploying my webservice on Weblogic. But this webservices will be used by C++ application. So, can you tell me how the C++ developer has to implement this.
    We got one idea, I can implement the webservices client in java this java will unmarshal the xml SOAP and stores into a flat file. The c++ application will take from the flat file. But here what the meaning for the webservice will be lost.
    Can you suggest me how we can implement this situation.
    Thanks

    Have your Datatype format as shown below:
    Have the occurence accordingly....
    Looking at your requirement every node from Req to Parameters may have occurence as 0..1
    Parameter will have 0..unbounded
    Name and Value will again have 0..1
    Req
    ->Type
    -->A
    --->Name
    --->City
    -->B
    --->Region
    -->C
    --->Parameters
    >Parameter
    >Name
    >Value
    Regards,
    Abhishek.
    Edited by: abhishek salvi on Sep 1, 2009 7:31 PM

  • How does the JVM handle private class parameters in a utility class?

    If I have a class that is public and not labeled as static, but it's constructor is private so that it cannot be instantiated, and all of its parameters and methods are both private and static. The methods modify the private parameters. In this case, the code explicitly is avoiding a singleton pattern, so there isn't even a class being instantiated, so this is a true utility class.
    However, the static methods are accessible from multiple objects, and as far as I can tell, the JVM is persisting the parameters in memory beyond the specific thread that called the static method to begin with.
    The question I have is how the JVM handles this? Are these private parameters assigned memory and are indeed persisted independent of thread, since there is no class reference. I am working with byte code injection, and the assumption is that a direct reference to a static parameter is much faster to call than having to go through an object reference. Of course, from a programmer point of view, I much prefer the singleton pattern since I am so used to hang my hat on a class reference.
    Thanks.

    entguru wrote:
    However, the static methods are accessible from multiple objects...Not if the methods are private, as you seemed to indicate ("all of its parameters and methods are both private and static").
    Are these private parameters assigned memory and are indeed persisted independent of thread, since there is no class reference. There is a class reference. It refers to the class, and is obtainable via the class literal; e.g., MyClass.class.
    ~

  • How does the JVM call Windows GDI Text functions?

    I need to find out how the JVM calls Windows GDI functions for Java running on Windows. I am a programmer at an imaging software company and we "hook" to client applications to extract information for searching and indexing. Basically what we do is tell the app to refresh itself and then we intercept the text output functions to the GDI. Recently, when trying to image enable an Oracle app (Sun JVM or bastard version thereof), we failed to capture any text output. None of the documented MS GDI text output functions are being called to display that text. Does anyone with an intimate knowledge of the workings of the JVM on a Windows platform know how this is accomplished. I currently have calls pending at Sun and Microsoft, but sometimes these forums have more info than they do. Thanks in advance for any help you can provide. ([email protected])
    Jason Nix

    I would venture to say that SUN is generating its own
    text. That would be necessary in order to handle all
    of the sizing and layout management issues which
    happen in Java real time, as opposed to Windows once
    at compile time.Not likely. Font rendering is always done at runtime and it would be generally unwise to do it yourself given the availability of TrueType fonts and the highly optimized rendering engines. I would be shocked if Sun tried to do it themselves.
    Chuck

  • On the printing slowness of Postscript produced by the JVM from calls to Graphics.drawString() (Linux/Unix)

    Happy new year,
    before the holidays my attention was drawn to an issue that supposedly the Postscript produced by the JVM is too big and hence too slow.  Here are my findings.
    The issue
    Text printing via CUPS to native Postscript printers can be slow. Printing a terms and conditions page (17000 characters/page) takes three and a half minutes to print on a Dell 2330 dn laser printer (96 MB,Max speed 33 ppm). The file is about 8 MB in size. To contrast that, rendering the text to a buffered image with 300 DPI and printing the result produces 7 MB of output which prints in 30 seconds on the same printer. More measures for different printers and documents can be found at the end of this post. The issues is registered as  "JDK-4627340 : RFE: A way to improve text printing performance for postscript devices" (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4627340) and the proposed workaround is to use printer fonts.
    Side remark regarding the workaround
    There is a regression that prevents the workaround from working (bug 9008662 at Sun (not yet visible),  bug 8023990 at OpenJDK (https://bugs.openjdk.java.net/browse/JDK-8023990). Without knowing what other bad side effects this might have, the issue can be resolved by setting the property "sun.awt.fontconfig". On my system I set it to the location of a "fontconfig.properties" of a JVM that does not have the bug (e.g. /home/alex/openjdk_7_b147_jun_11/openjdk/build/linux-i586/bin/java -Dsun.awt.fontconfig="/etc/java-6-openjdk/fontconfig.properties" Print2DtoStream). I also successfully tested the workaround on an Oracle JVM 1.7.0_03-b04.
    Back to the main topic
    How the JVM draws text if it can't use a standard printer font
    Text is drawn with postscript path drawning commands such as "moveto", "lineto" or "curveto". As an example consider the word "ll" which looks something like this:
    %N->short for "newpath"
    N
    %paint first "l"
    %M->short for "moveto"
    0.76875 11.06 M
    %L->short for "lineto"
    0.76875 2.468 L
    1.823 2.468 L
    1.823 11.06 L
    0.76875 11.06 L
    %p->short for "closepath"
    P
    %paint second "l"
    3.649 11.06 M
    3.649 2.468 L
    4.703 2.468 L
    4.703 11.06 L
    3.649 11.06 L
    P
    The same text could be printed with a printer font using the command "(ll) show" which is much more compact but is available in Java only for the Postscript standard fonts and it isn't working at all right now as explained above.
    Is it the file size?
    My first thought was that the file size was the source of of slowness and so I wrote a small processor that would detect glyphs, normalize*1 them and place them in a dictionary. Recurring references to the same glyph were replaced by a dictionary reference  (This is incidentally the fix proposed by the original author of RFE 4627340). This shrunk the file to about 11% of the original size but the processing time surprisingly doubled.
    *1: With "normalizing" I mean applying a translation transform so that the smallest coordinates in the contours of a glyph are exactly 0. In addition I experimented with performing a normalizing scale transform so that all coordinates lie between 0 and 1 so that identical glyphs are detected at arbitrary positions and at different font sizes.
    That led to the question to why there is such a big difference in performance between a Type 1 font dictionary and a self constructed dictionary since both contain basically the same drawing instructions. The difference is apparently that fonts are cached and user drawings are not unless explicitly told.
    The Postscript "ucache" instruction
    Postscript level 2 introduces the "ucache" instruction which seems to be defined for precisely this kind of problem. From the documentation:
    "Some PostScript programs define paths that are repeated many times. To optimize the interpretation of such paths, the PostScript language provides a facility called the user path cache. This cache, analogous to the font cache, retains the results from previously interpreted user path definitions. When the PostScript interpreter encounters a user path that is already in the cache, it substitutes the cached results instead of reinterpreting the path definition. "
    After adding "ucache" instructions to my filter the speed improved by factor 10.
    To illustrate the said the "ll" text from above looked as follows after the transformation:
    %definition of the glyph "l" named "p0"
    /p0
    ucache
    0.000 0.000 1.054 8.592 setbbox
    0.000 8.592 moveto
    0.000 0.000 lineto
    1.054 0.000 lineto
    1.054 8.592 lineto
    0.000 8.592 lineto
    closepath
    } cvlit def
    G
    N
    0.769 2.468 translate
    %draw "l" at 0.769 2.468
    p0 ufill
    -0.769 -2.468 translate
    3.649 2.468 translate
    %draw "l" at 3.649 2.468
    p0 ufill
    -3.649 -2.468 translate
    For ucached shapes there is a special compact representation so that the same can be written as follows:
    /p0
    0.000 0.000 1.054 8.592
    0.000 8.592
    0.000 0.000
    1.054 0.000
    1.054 8.592
    0.000 8.592
    } cvlit def
    G
    N
    0.769 2.468 translate
    p0 ufill
    -0.769 -2.468 translate
    3.649 2.468 translate
    p0 ufill
    -3.649 -2.468 translate
    Interestingly the speed improvement remained the same on a Chinese report that had hardly any character reuse. Upon this observation I changed the filter to not use a dictionary but so simply instruct the interpreter to cache each glyph definition and the performance remained nearly the same.
    The initial "ll" text from above looks as follows after this transformation:
    N
    %paint first "l" cached
    0.76875 2.468 1.823 11.06
    0.76875 11.06
    0.76875 2.468
    1.823 2.468
    1.823 11.06
    0.76875 11.06
    } ufill
    %paint second  "l" cached
    3.649 2.468 4.703 11.06
    3.649 11.06
    3.649 2.468
    4.703 2.468
    4.703 11.06
    3.649 11.06
    } ufill
    Note that I didn't normalize the shapes.
    Why does this improve the performance so vastly if the shape is drawn only once? For a while I thought perhaps that the interpreter would consider two paths which differ only by a translation as being the same but rereading the documentation and looking at the Chinese example in which nearly all characters are unique, disproves this. The relevant part of the documentation reads:
    "Caching is based on the value of a user path object. That is, two user paths are considered the same for caching purposes if all of their corresponding elements are equal, even if the objects themselves are not.
    A user path placed in the cache need not be explicitly retained in virtual memory. An equivalent user path appearing literally later in the program can take advantage of the cached information. Of course, if it is known that a given user path will be used many times, defining it explicitly in VM avoids creating it multiple times.
    User path caching, like font caching, is effective across translations of the user coordinate system, but not across other transformations, such as scaling or rotation. In other words, multiple instances of a given user path painted at different places on the page will take advantage of the user path cache when the current transformation matrix has been altered only by translate. If the CTM has been altered by scale or rotate , the instances will be treated as if they were described by different user paths."
    An explanation that would fit the findings
    The rasterizer renders the page multiple time (perhaps in order to save memory and produce horizontal strips). On the first rendering the cache is filled and reused on the subsequent renderings thereby improving performance even if all cached items are used only once.
    Based upon this theory I hoped that the strip height would grow if I added more memory to the printer but this was not the case on the two printers for which I had memory to test with. Even substantial changes to the available memory (e.g. going from 32 MB to 96 MB) had no impact whatsoever on the performance.
    Summary
    The issue is not related to the file size as the original requester suspected but very likely due to the uncached rendering. Caching of glyphs can be achieved by using the "ucache" instruction or perhaps by placing the glyphs in font dictionaries and using the "show" operator.
    Although reported in 2003, time is apparently not healing this quick enough since printers in the 10,000$ class like the Sharp MX2310U still take a full minute to print 10 pages and a desktop printer may be blocked for over an hour for the same document.
    We will now try to use the CUPS filter and leave the printers configured as Postscript printers. If there is interest I can post the single file source of a CUPS filter that performs the inline conversion described. Apart from libl it requires no additional libraries and written using flex it is reasonably lightweight and fast.
    I would appreciate any opinion on whether or not the proposed workaround for bug 8023990 (https://bugs.openjdk.java.net/browse/JDK-8023990), namely having the system property "sun.awt.fontconfig" pointing to a working fontconfig.properties of a previously installed and working 1.6 version file, is safe.
    Measures (Appendix)
    "Terms and Conditions" report
    Testing a single page "Terms and Conditions" report in "Arial" 8pt (I am aware that "Helvetica" is width compatible and nearly looks the same but in this particular case the line height was also relevant and as explained above, printer fonts are currently not working). The page contains 17000 characters of which some parts are bold and some italic. This is a real world example and to make things worse the requirement is to print the text on the backside of every page on a certain class of reports. I am aware that this is a bit extreme but I also felt that I couldn't dismiss it as being unreasonable.
    File "Arial.ps" (7.5 MB Unmodified output of the JVM)
    Printer
    Printing time
    Dell 2330dn 32MB/96MB
    3:50 minutes
    Lexmark X658de (55 ppm, aprox. 5,000$)
      1:45 minutes
    HP LaserJet 4240n 64 MB
    1:12 minutes
    Kyocera Taskalfa 300ci (30 PPM, aprox. 8,000$)
    1 minute
    HP Color LaserJet 4650 dn 128/384MB
    51 seconds
    Sharp MX 2310U 512MB (55ppm,  aprox. 10,000$)
    31 seconds
    Arial_inline.ps (8 MB contains "ucache" without normalization and without dictionary)
    Printer
    Printing time
    32MB/96MB
    30seconds/30seconds (Improvement by factor 7.7)
    Lexmark X658de (55 ppm, aprox. 5,000$)
      15 seconds (Improvement by factor 7)
    HP LaserJet 4240n 64 MB
    47 seconds (Improvement by factor 1.5)
    Kyocera Taskalfa 300ci (30 PPM, aprox. 8,000$)
    20 seconds (Improvement by factor 5)
    HP Color LaserJet 4650 dn 128/384MB
    46 seconds (Improvement by factor 1.1)
    Sharp MX 2310U 512MB (55ppm,  aprox. 10,000$)
    14 seconds (Improvement by factor 2)
    Asian characters test
    Testing 10 pages of Asian characters in the font "WenQuanYi Zen Hei" 12pt where each page contains 49 lines by 40 unique characters. The document contains the 30,000 characters between unicode 0x4e00 and 0x9fff. This is a nonsense stress test but it illustrates  that the "ucache" speedup works even though no character is repeated in the report.
    Asian.ps  (52 MB Unmodified output of the JVM)
    Printer
    Printing time
    Dell 2330dn 32MB/96MB
    64 minutes
    Lexmark X658de (55 ppm, aprox. 5,000$)
    Not measured
    HP LaserJet 4240n 64 MB
    11 minutes
    Kyocera Taskalfa 300ci (30 PPM, aprox. 8,000$)
    Not measured
    HP Color LaserJet 4650 dn 128/384MB
    9:13 minutes
    Sharp MX 2310U 512MB (55ppm,  aprox. 10,000$)
    4:08 minutes
    Asian_inline.ps (54 MB contains "ucache" without normalization and without dictionary)
    Printer
    Printing time
    32MB/96MB
    5:30 minutes (Improvement by factor 11.6)
    Lexmark X658de (55 ppm, aprox. 5,000$)
    Not measured
    HP LaserJet 4240n 64 MB
    3:48 minutes (Improvement by factor 2.9)
    Kyocera Taskalfa 300ci (30 PPM, aprox. 8,000$)
    Not measured
    HP Color LaserJet 4650 dn 128/384MB
    2:46 minutes (Improvement by factor 3.4)
    Sharp MX 2310U 512MB (55ppm,  aprox. 10,000$)
    48 seconds (Improvement by factor 5)

    Hi Sven,
    Will putting the boilerplate in the trailer section allow me to still have it appearing on the back page of the main report? This is where it needs to be as far as the printed report goes - it is duplexed.
    Regards
    Lanny

  • A book about the JVM

    Hello,
    I want to learn more about how the JVM work, how .class files are written etc... Do you know a good book?
    I have seen some books but all are older than 8 years...

    thibaultdelor wrote:
    Ok, there's no " [Inside The Java Virtual Machine|http://www.amazon.com/exec/obidos/ASIN/0071350934/billvennersA] " up to date.
    I just ask myself one thing. It seems that the JVM specs hasn't evolved for each version of Java, Does this means that the Java has evolved but in a transparent manner for the JVM?Yes but what does that have to do with your original question. The fact that the VM spec hasn't changed much doesn't mean that the VMs haven't.

  • Restarting the JVM vs. Restarting the Application

    I am in a disagreement with someone as to whether or not the JVM should be restarted every time a java web application is installed on a server.
    I say for the sake of better safe than sorry just restart the JVM and be done with it.
    additionally there are issues concerning the way the class loaders are handled inside the application(parent last) and the caching of the external configuration files at application startup.
    Can anyone tell me why I would not want to restart the JVM every time? (assuming my application is the only one running on that JVM)
    Thanks,

    The instrumentation buffer was enabled in J2SE 1.4.2 so you need to be running 1.4.2 or 5.0 for the jvmstat tools to work.

  • How the system will know the procrument type weather it is E or F

    Hello Frinds ,
    i am creating material  A  by using material  B  , materal B is created inhouse also & Procrued from ouside also
    Now i want Produce material A from inhouse produced material B ,how the input should be given to know the system that it is inhouse produced material?
    2 for that is any data need to be maintained
    3 is valuation category play a role to know the systm ?
    4 if yes how to maintain multiple valuation category for a same material?
    Regards
    Girish

    Hi Girish,
    You have to maintain split valuation for your material if you want to make difference between internally and externally procured material.
    http://www.sap123.com/showthread.php?t=29
    http://help.sap.com/saphelp_47x200/helpdata/en/47/6101a549f011d1894c0000e829fbbd/frameset.htm
    You have to use a separate valuation type both for inhouse and purchased goods.
    Even though you set split valuation for your goods SAP will consider both kind of the products as available for production.
    You should choose the suitable valuation type for your production order manually (maybe there is other way I don't know about).
    Regards,
    Csaba
    Edited by: Csaba Szommer on Nov 14, 2008 11:28 AM
    Edited by: Csaba Szommer on Nov 14, 2008 11:31 AM

  • How to find out the JVM thread that is consuming high CPU

    I am using WL 10.3, JRockit JVM on Linux. I have taken thread dumps. How to find out the JVM thread that is consuming high CPU?
    I know how to map it Sun JVM on Solaris. I haven't done in on JRockit so far. Please advise.

    Check out some of Marcus Hirt's blog entries for details about how to use JRockit Mission Control. It's a very nice tool that should provide a lot of insight:
    http://blogs.oracle.com/hirt/

  • How to get the list of instanciated object in the JVM ?

    Hi,
    Is there a way to build a HashMap containing:
    key: class name
    value: array of Objects references containing all instance of this class name
    Thank's
    John

    With others words, this questions were here to investigate if there is a tricky way to write a pure java code to that can identify and references objects living in the heap (debugging and performance purpose).
    Yeap, somewhere this question is not interesting as there is no pointers in java, so no way to read a single bit in the heap.
    I were just hopping that somewhere there is a way to enumerate the object living in the heap, either through a hashmap containing the reference of these object and managed by an obscur java.lang class or a kind of class that will load "manually" any application to troubleshoot (much more realistic as such hashmap should exist and by managed by the jvm only).
    Now, using jni, is it possible to access in a very simple way this "jvm hashmap" ?

  • How to set the JVM Startup Options?

    Hi,
    I want to know how to set the JVM Startup Options...
    The idea is, I want to test how the remote clients can access an EJB that is running on a different machine... Remote client here means, I have a java client application that runs on one machine and that contacts an EJB thats running on a different machine... I posted this question in J2EE forum and I got this reply...
    If you need to access EJB components that are residing in a remote system other than the system where the application client is being developed, set the values for the Java Virtual Machine startup options:
    jvmarg value = "-Dorg.omg.CORBA.ORBInitialHost=${ORBhost}"
    jvmarg value = "-Dorg.omg.CORBA.ORBInitialPort=${ORBport}"
    Now how to set the JVM Startup Options? I know my server ORBHost Name and the ORBPort..
    Anybody to help !!!
    Thanks in advance,
    Karthik

    java -Dorg.omg.CORBA.ORBInitialHost=${ORBhost} -Dorg.omg.CORBA.ORBInitialPort=${ORBport} <the main class>
    That should do it..

  • How to populate data in MPP through F4 search help(the field should get filtered as per key)

    Dear Experts.
    I am new to ABAP and hence trying jmy hands on various ways of peforming a task.
    I have a requirement. I want to maintain a database tables through MPP :  ZLT_Auftrag (Refer Screen Shot 1: Doubt MPP1) and ZLT_Kunde (Refer Screen Shot2: Doubt MPP2)
    The fields of ZLT_Kunde are: K1, K2, K3
    The fields of ZLT_Auftrag are: A1, A2, A3, A4, P1 P2 and P3 are related as per the key field "A3"   (Here A3 = K2)
    I want the User to be able to Maintain this table through the Screen that I had created using MPP. (Plz refer the attached Screen Shot3:Doubt MPP3  of the SCREEN in MPP)
    When I populate the Kunde name(K1) in the SCREEN (Can be done by F4 Search help), then on hitting the pushbutton "Get Kunde" the  kunde Code (K2) appears . Now from here it can be deleted or even a new Kunde name and code can be saved dirctly to the database table : ZLT_Kunde. (Refer Screen Shoot4: Doubt MPP4)
    For Example for Kunde (K1)= BASF, Kunde Code (K2) = BSF, the Auftrag should be all those values from ZLT_Auftrag (where A3 = BSF)
    When I try to populate the Auftrag value on the SCREEN then on hitting F4 (already created for table ZLT_Auftrag in se11) then I get all the values of Auftrag (A1) from the table ZLT_Auftrag. (Ply refer Screen Shot 5: Doubt MPP5)
    MY REQUIREMENT: Here I want that either through F4 help or through drop down ONLY those values of Auftrag-A1 should appear on the SCREEN which satisfies the condition: A3 = K2
    I am unbale to get how to do that.
    I need your valuable suggstions.
    Regards
    Chandan

    And the  code of the MPP is:
    *& Module Pool       SAPMZDEMO_MPOOL_03
    PROGRAM  SAPMZDEMO_MPOOL_03.
    TABLES:  ZLT_MITA, ZLT_Kunde, ZLT_Auftrag, Zlt_Stdsatz.
    DATA: flg_lock  TYPE c,
    *      indx  TYPE i,
    *      indxk TYPE i,
    *      indxa TYPE i,
    *      TCNT TYPE sy-tabix,
          lv_msgv1  TYPE  sy-msgv1.
    *DATA: it_mita    TYPE TABLE OF ZLT_mita,
    *      it_kunde   TYPE TABLE OF ZLT_KUNDE,
    *      it_auftrag TYPE TABLE OF ZLT_AUFTRAG.
    *&      Module  STATUS_9000  OUTPUT
    *       text
    module STATUS_9000 output.
      SET PF-STATUS 'ZSTATUS01'.
    *  SET TITLEBAR 'xxx'.
      If flg_lock is Not initial.
        LOOP at Screen.
      If screen-group1 = 'G1'.
      Screen-input = 0.
      MODIFY SCREEN.
           Endif.
        ENDLOOP.
          MESSAGE s000(8i) WITH 'Mitarbeiter already locked by user' lv_msgv1.
      ENDIF.
    endmodule.                 " STATUS_9000  OUTPUT
    *&      Module  USER_COMMAND_9000  INPUT
    *       text
    module USER_COMMAND_9000 input.
    *To Populate Data into Mitarbeiter through Pushbuttons
      CASE sy-ucomm.
        When 'OK_GET'.
          Clear : flg_lock.
            IF ZLT_MITA-M1 is NOT INITIAL.
                SELECT SINGLE *
                FROM  ZLT_MITA
                Where M1 = ZLT_MITA-M1.
    *To create a Lock Object so that when two or more employees are accessing the same data
    * at the same time then for the new user the data gets locked and only can been seen in
    *display mode
            IF sy-subrc = 0.
            CALL FUNCTION 'ENQUEUE_EZLT_MITALOCK'
             EXPORTING
               MODE_ZLT_MITA        = 'E'
               MANDT                = SY-MANDT
               M1                   = ZLT_MITA-M1
    *           X_M1                 = ' '
    *           _SCOPE               = '2'
    *           _WAIT                = ' '
    *           _COLLECT             = ' '
             EXCEPTIONS
               FOREIGN_LOCK         = 1
               SYSTEM_FAILURE       = 2
               OTHERS               = 3
            IF sy-subrc <> 0.
              flg_lock = 'X'.
              lv_msgv1 = sy-msgv1.
            ENDIF.
            ENDIF.
            ELSE.
                MESSAGE S000(8i) With 'Enter Mitarbeiter Name'.
            ENDIF.
        When 'OK_SAVE'.
           Modify ZLT_MITA.
           IF sy-subrc = 0.
             MESSAGE s000(8i) With 'Data Saved'.
           ENDIF.
        When 'OK_DELETE'.
            IF ZLT_MITA-M1 is NOT INITIAL.
                DELETE
                FROM  ZLT_MITA
                Where M1 = ZLT_MITA-M1.
              IF sy-subrc = 0.
                MESSAGE S000(8i) With 'Data deleted'.
              ENDIF.
            ENDIF.
    *     When 'OK_FIRST'.
    *           indx = 1.
    *     When 'OK_NEXT'.
    *           indx = indx + 1.
    *     When 'OK_PREV'.
    *           indx = indx - 1.
    *     When 'OK_LAST'.
    *           Describe Table it_mita lines indx.
    *To Populate Data into Kunde through Pushbuttons
        When 'OK_GETK'.
            IF ZLT_Kunde-K1 is NOT INITIAL.
                SELECT SINGLE *
                FROM  ZLT_Kunde
                Where K1 = ZLT_KUNDE-K1.
            ELSE.
                MESSAGE S000(8i) With 'Enter Kunde Name'.
            ENDIF.
        When 'OK_SAVEK'.
           Modify ZLT_Kunde.
           IF sy-subrc = 0.
             MESSAGE s000(8i) With 'Data Saved'.
           ENDIF.
        When 'OK_DELETEK'.
            IF ZLT_KUNDE-K1 is NOT INITIAL.
                DELETE
                FROM  ZLT_KUNDE
                Where K1 = ZLT_KUNDE-K1.
              IF sy-subrc = 0.
                MESSAGE S000(8i) With 'Data deleted'.
              ENDIF.
            ENDIF.
    *To Populate Data into Auftrag Through Pushbuttons
        When 'OK_GETA'.
            IF ZLT_KUnde-K2 is NOT INITIAL.
                SELECT SINGLE *
                FROM  ZLT_Auftrag
                Where A3 = ZLT_Kunde-K2.
            ELSE.
                MESSAGE S000(8i) With 'Enter Kunde Name'.
            ENDIF.
        When 'OK_SAVEA'.
           Modify ZLT_Auftrag.
           IF sy-subrc = 0.
             MESSAGE s000(8i) With 'Data Saved'.
           ENDIF.
        When 'OK_DELETEA'.
            IF ZLT_Auftrag-A1 is NOT INITIAL.
                DELETE
                FROM  ZLT_Auftrag
                Where A1 = ZLT_Auftrag-A1.
              IF sy-subrc = 0.
                MESSAGE S000(8i) With 'Data deleted'.
              ENDIF.
            ENDIF.
    *To Populate Data into Position Thorugh Pushbuttons
        When 'OK_GETP'.
            IF ZLT_Auftrag-A2 is NOT INITIAL.
                SELECT SINGLE *
                FROM  ZLT_Auftrag
                Where A3 = ZLT_Kunde-K2.
            ELSE.
                MESSAGE S000(8i) With 'Enter Kunde Name'.
            ENDIF.
        When 'OK_SAVEP'.
           Modify ZLT_Auftrag.
           IF sy-subrc = 0.
             MESSAGE s000(8i) With 'Data Saved'.
           ENDIF.
        When 'OK_DELETEP'.
            IF ZLT_Auftrag-A1 is NOT INITIAL.
                DELETE
                FROM  ZLT_Auftrag
                Where A1 = ZLT_Auftrag-A1.
              IF sy-subrc = 0.
                MESSAGE S000(8i) With 'Data deleted'.
              ENDIF.
            ENDIF.
        When 'OK_EXIT'.
           Leave Program.
        When 'OK_CLEAR'.
          Clear : ZLT_MITA, ZLT_KUNDE, ZLT_AUFTRAG.
    *              it_mita, it_kunde, it_auftrag,
          CALL FUNCTION 'DEQUEUE_EZLT_MITALOCK'
           EXPORTING
             MODE_ZLT_MITA       = 'E'
             MANDT               = SY-MANDT
             M1                  =  ZLT_MITA-M1
    *         X_M1                = ' '
    *         _SCOPE              = '3'
    *         _SYNCHRON           = ' '
    *         _COLLECT            = ' '
    ENDCASE.
    endmodule.                 " USER_COMMAND_9000  INPUT
    *&      Module  user_cmd_9000  INPUT
    *       text
    module user_cmd_9000 input.
      If sy-ucomm = 'OK_CANCEL'.
      LEAVE PROGRAM.
      ENDIF.
      IF sy-ucomm = 'OK_EXIT'.
          LEAVE PROGRAM.
      ENDIF.
    endmodule.                 " user_cmd_9000  INPUT

Maybe you are looking for