Slashdot Mirror


How Much Java in the Linux World?

jg21 writes "Java is 'incredibly heavily used' in the Linux community, according to Sun's James Gosling, one of Java's co-creators. Gosling was debating Stanford's Lawrence Lessig, Apache co-founder Brian Behlendorf, IBM's Rod Smith, and others at JavaOne this week about the possible merits of open-sourcing Java vs the market's demand for continuing compatibility. But Behlendorf seemed not to agree. So who was right, how many Slashdotters are also Java users? Is "incredibly heavily used" an overstatement by Gosling, who after all helped create the language and therefore might be biased?"

44 of 601 comments (clear)

  1. Yes at least in Apache world by unixmaster · · Score: 4, Informative

    Check out http://jakarta.apache.org . All of projects are under Java and they are highly sophisticated open source project. Also some of http://xml.apache.org projects are under Java too. So I say not maybe highest usage but sophisticated apps are written under Java and most of them are open source.

    --
    Never learn by your mistakes, if you do you may never dare to try again
    1. Re:Yes at least in Apache world by njdj · · Score: 1, Informative

      http://jakarta.apache.org . All of projects are under Java
      Well, duh. That's what Jakarta means within Apache. But the stuff under jakarta.apache.org is a tiny part of what the Apache organisation does. You get a better perspective if you look at their main site, http://www.apache.org , where Jakarta is just one menu item out of 23.

    2. Re:Yes at least in Apache world by wario78 · · Score: 5, Informative
      if you look at their main site, http://www.apache.org , where Jakarta is just one menu item out of 23

      True, but many of those 23 items are former Jakarta projects that have been promoted to become top-level projects. Looking at it that way, 11 (Ant, Avalon, Cocoon, DB, Forrest, Geronimo, James, Maven, Portals, Struts & Web Services) top-level Apache projects are purely Java-based. Gavin

  2. Not just for linux though by WebMasterP · · Score: 5, Informative

    I develop radar software and I'm writing it in Java. This is done for cross-platorm compatibility though, not just because I want to run it on Linux.

  3. Incredible, indeed by Anonymous Coward · · Score: 5, Informative

    I was surprised to learn that Java is used more than Perl or C++ in projects listed on freshmeat.net.

    1. Re:Incredible, indeed by Anonymous Coward · · Score: 1, Informative

      Most of the useful apps on Freshmeat are command line oriented and hence C-based. Too bad Java programs nearly always insist on a GUI. I for one would love to try out some Java command line programs.

    2. Re:Incredible, indeed by njdj · · Score: 2, Informative
      I was surprised to learn that Java is used more than Perl or C++ in projects listed on freshmeat.net.
      It isn't. More projects list Java as an implementation language than list C++ or Perl (by a very small margin, see below). But this includes projects largely written in C++ or Perl, which have a small piece written in Java. Number of mentions does not correspond with amount of use.
      The most-frequently-mentioned languages on that Freshmeat page are as follows.

      Language, # mentions
      C, 6334
      Java, 3126
      Perl, 3076
      C++, 3027
      PHP, 2572
      Nothing else is over 2000.

    3. Re:Incredible, indeed by geophile · · Score: 2, Informative

      Java is not the best for command line programs mainly because VM initialization is expensive (in terms of time).

      Which is why a Java shell is needed. Everything runs inside the shell's VM, so there is no need to load the VM for each command.

      I used to be a fan of the Psion 5mx which ran Java. Startup time was horribly slow, and typing in the classpath each time was torture, so I wrote a shell for it, still obtainable here.

      This shell did the right thing with ClassLoaders, so that you could edit Java source, recompile using javac (inside the shell's VM), and reload the new version of the class.

      Jshell is a bit ancient, (written in JDK 1.1.4 days), but it works. And it's open source if anyone wants to continue it.

  4. Re:C/C++, not java by Pieroxy · · Score: 5, Informative

    How many enterprise web application do you know that is written in C/C++? Cause that's where the money is these days....

  5. Re:C/C++, not java by Anonymous Coward · · Score: 1, Informative

    I'm sure most enterprise systems are coded in Java not C++. Sure all the new open source desktop stuff is being done in C/C++ .... but search a job site for 'Java Linux' and then 'C++ Linux' and compare the number of hits.

  6. lots by primus_sucks · · Score: 3, Informative

    I work at a fortune 500 company. My present Java project is hosted on Linux and it's planned that all upcoming projects will be as well. We are even looking at Mono for hosting our legacy ASP apps, but all new development is Java on Linux. I guess someone is tired of getting viruses that disrupt our network.

  7. How many projects? by Simon+(S2) · · Score: 5, Informative

    Just have a look at the projects hosted on sf.
    There are 12588 projects in Java. Right behind the 13922 in C++ and the 13785 in C.

    So I guess, Java IS used a lot.

    --
    I just don't trust anything that bleeds for five days and doesn't die.
  8. ermmm hold it folks by sofar · · Score: 1, Informative


    not all of us enjoy java. I have a measly p3-1ghz with 192mb of ram and when mozilla and a few other apps have filled it up for every-day use even the *smell* of java makes me sick, my lappy starts swapping and mozilla crunches to a halt.

    That's just j2 plugins in my browser... openoffice with java takes 60+ seconds to start, and you think java is widespread?

    seriously java might be nice but for some things it really isn't. Everytime I start a solaris admin tool using java I think "okay it saves sun development time". But in Linux? no way.

    I wouldn't even touch java with a 10ft pole.

  9. It's heavily used in some areas. by arcade · · Score: 4, Informative

    Java is indeed heavily used - in some areas. It's in extreme usage "server-side", and many people develop applications in Java - for servers.

    On the client, however, you'll find it far less often. I use a java client when no other alternatives exist. Java has always been an incredible memory hog for me. I don't like using java on the client. It's mostly slow and unresponsive.

    Personally I vastly prefer to use C or C++ programs, as they tend to be much nicer to use. In addition, they tend to have the same interface as the rest of the programs in my desktop environments. ;)

    --
    "Rune Kristian Viken" - http://www.nwo.no - arca
    1. Re:It's heavily used in some areas. by Tim+C · · Score: 2, Informative

      Java has always been an incredible memory hog for me. I don't like using java on the client. It's mostly slow and unresponsive.

      While that's relatively true, in absolute terms it really depends on the spec of your machine. For instance, I use JBuilder at work, and on my machine there it's plenty responsive enough. Of course, I have a 3GHz P4 with a gig of RAM; on my old P2 450 with 512MB it was rather more painful.

  10. Java on Linux for All by Red_Winestain · · Score: 2, Informative
    I'm involved with a commercial, web-delivered application, and we use Java served from Debian GNU/Linux boxes. Java was picked because our market is education, we need to support Macs and Unix as well as Windows.

    The key, though, is that we've found we get the best results (e.g., as close to running universally as possible) by compiling on Linux (as opposed to on a Wintel box or a Mac box). Folks using anything from Mac OS 8.1 and Win95 to the latest thing all have access.

  11. Re:I know what he means by Decaff · · Score: 1, Informative

    Start up a JVM process and you'll find that it makes incredibly heavy use of resources.

    As even the latest VMs can run in only a few megabytes of memory, and as (see recent slashdot stores) can give speeds comparable to C++, and the most recent VMs allow VM sharing - you can make use of the same VM for more than one program, you statement is false.

  12. incredibly heavily, not most heavily by AnEmbodiedMind · · Score: 4, Informative

    He said "Java is 'incredibly heavily used' in the Linux community", not that it is the "most heavily used language".

    A subtle but important difference.

  13. Java, because it has that many good working libs by the_emmy · · Score: 4, Informative
    I'm using Java when ever possible (i.e. when I have to choose the plattform). The two main reasons for this are:
    • There are many very great libraries. E.g. OJB is a great database layer and SWT can create nice GUIs. All these Apache Common Tools are also very great and allow quick application development.
    • Eclipse is the best IDE I ever saw. The great refactoring features and the hot code replace speed up development immensely.
    Sometimes I'm not the own who chooses the plattform of a project. In the last years these projects were all .NET/C# projects. .NET/C# is not that bad, but some libs are bad documented (e.g. ASP.NET) or limited (ADO.NET -- one cursor open per connection ?!?!) so you have to build workarounds and own libraries. Also the development environment is not bad, but it has no refactoring, eats memory like hell and is dog slow.
  14. Re:OSS Mono to take over? by dnaumov · · Score: 3, Informative
    "Java is not open source. This means that no-one can ship java with a Linux distro - you have to agree to a multi-page EULA before you can use it."

    Thats funny seeing as SUSE and Slackware DO ship SUNs JDK.
  15. Java & Linux by Z00L00K · · Score: 2, Informative
    I'm a Linux user and am using Java for two reasons:

    • Reasonable stable code (at least in the later versions).
    • Binaries are portable between most platforms

    There are some drawbacks with Java too:

    • Brain-dead memory handling. - I as a programmer can't control or supervise the memory management
    • Resource-hungry, especially when GUI:s are present.

    In all, this means that when resource consumption is not an issue, Java is a good choice, but when I want something lean&mean I'm using C, or even script-programming.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  16. Re:Exactly - Java is not about the O/S by Taladar · · Score: 2, Informative

    And now with correct layout:

    I am working at a Java Project at the University and I have found Java to be an absolute nightmare when it comes to consistency of implementation.

    I agree with you in that the idea of Java was good, but the implementation of the language has absolutely no aspects of a beautiful/easy-to-use language.

    I could name dozens of things I encountered in the past few weeks but I will name just a few:

    -primitive types and associated classes:
    When I want to store a variable of one the primitve types like int (the ones you use in every class) you have to wrap them into a class (Integer) which has no way to change the Value later. So everytime I want to e.g. increment a counter stored this way, I have to convert it back to int, increment it und create a new Integer-Object to store the incremented value back into my container-class.

    -If I want to compare two Classes I have to use the equals-Method instead of a simple operator-overloading which would enable me to use ==

    -When I retrieve an Object from a Container it is a java.lang.Object instead of the type I stored which totally negates the advantages of static typing

    -Attributes of a Class are not totally protected against access from the outside (I have to work with old code that makes heavy use of this)

    In short, Java is critical because it is portable and managed.

    I worked a year as a system administrator after school and I can tell you Java is nowhere near it's theoretical Portability in the field. Once I had to replace a couple of hundred JRE because one important (Java-)Software the Company used produced lots of errors on 1.3.1_04 and ran fine on 1.3.1_02.

    When I started the programming project for the University I mentioned above I had to install Borland Together (for UML which we had to use). I tried to install it but the InstallAnywhere insisted on using its 1.3.1 dynamically compiled JRE which did not run on my glibc 2.3 system. I had to manually unpack the installation package, use another JRE 1.3.1 to install (the installer insisted on the old version, i had installed 1.4.2 at the time). When I tried to use the JRE 1.4.2 with it later (by editing the start-shell-script) the exporting to images of the diagrams stopped working.

    Long story short, Java is not portable nor compatible to another version of itself, which would be no real problem if it you had the source of the old Java-Program you wanted to use but since almost all Java-Programs are closed-source this poses quite a big problem as soon as someone wants to use more than one Java-Program on his/her computer.

  17. Re:It is the nanobots making him say that... by Decaff · · Score: 3, Informative

    What would we lose if all Linux Java apps suddenly disappeared?

    The ability to develop for one of the most widely used server systems (Linux) in the most widely used server-side development language (Java).

  18. Java is the most heavily used in business by Anonymous Coward · · Score: 3, Informative

    You are probably right that C and C++ are more heavily used by Open Source developers.

    If we look at the number of jobs being offered, however, it appears that Java is now the number one language used in business, having passed C and C++ sometime in the last two years.

    For example, here are the current numbers of job listings at Dice.com:

    8284 - Java

    5714 - C

    4993 - C++

    7967 - C OR C++

    1. Re:Java is the most heavily used in business by Anonymous Coward · · Score: 1, Informative

      Except you need to somehow combine the C and C/C++, and C++ and C/C++ to get a more accurate representation. No matter how you combine them, Java is not number one.

  19. Corrected SourceForge link - language statistics by Anonymous Coward · · Score: 3, Informative

    Corrected link:

    SourceForge Projects by Programming Language

    From the page:

    - C (13785 projects)

    - C++ (13922 projects)

    - Java (12588 projects)

    That's very interesting. Even though I'm a Java supporter, I was surprised to see so many Open Source Java projects.

  20. Re:I'm usiging the original by cxvx · · Score: 3, Informative
    Ok, let's say you have a preinstalled JRE. You upgrade your JRE and half the features in your Java App stop working. Your second Java-App needs the new version? Too bad.

    Care to back this up with some facts? If Java has done anything, it is trying to stay backward compatible too long. Not a single method that has been deprecated has been removed. There are quite a few Java developers that would like to see the JDK cleaned up of those.

    For example, even the entire Swing library hasn't been updated to use JDK 1.2, eg., it still uses Vectors instead of Lists, just for keeping the backward compatibility.

    --
    If only I could come up with a good sig ...
  21. I do use Java by harmonica · · Score: 2, Informative

    it requires the right JVM

    Most people use the latest JDK and that's it. No problem. A C program also requires the right compiler unless it's trivial or you want to descend into ifdef hell.

    it doesn't have a #include to keep parameterizations in one file,

    It has import.

    it is actually write-once-debug-everywhere,

    Actually, it's not. At least not everywhere. In my Java experience since 1996 I've yet to see that debug everywhere nightmare. And I've touched a lot of operating systems and Java software projects. Maybe I was lucky. But debug everywhere? Ridiculous. But it's a catchy phrase to spread around if you don't really use Java as you claim in your subject line.

    too many things in Java are only available as precompiled packages (open source in Java is a very rare thing)
    and doing anything interesting in Java requires a native method anyway (hello, C!).


    Tough. If people don't want to provide source code, that's their decision. I've used binary C and C++ libraries all the time. As long as they're documented, that's okay. And yes, some things requires native calls in Java. But very few, really. If you catch yourself using JNI all the time you may have picked the wrong language for the project in the first place. Java isn't right for anything.

    (for those that claim that "multiple inheritance is obsolete and I should be using "implements", remember that "implements" really means is "here is a routine with the same name, that we gaurantee is _different_ source code and will therefore NOT be bug-for-bug equivalent to the code you thought you were getting. Have a nice day and thank you for using Java".)

    I claim that multiple inheritance is overestimated by some because a thing is rarely two or more other things. You get other problems with MI like the diamond of death.

  22. Re:Exactly - Java is not about the O/S by MrWim · · Score: 1, Informative
    BTW: in C or C++ you have the same distinction. Its called comparision by value and comparision by address, == checks for same address, that means same object. .equals() is user defined and you define "equal" as you need it for a certain type.

    in C++ == will check for the same address if both side of the operator are pointers to things. If they are objects or references to objects it will do a value comparison based on a user specified function called operator==().

  23. Re:Exactly - Java is not about the O/S by Dr.+Evil · · Score: 4, Informative

    C++ has this nice thing called Operator Overloading, "==" can be assigned to a method. Java does not do operator overloads, it's a PITA for people who are used to having the feature.

    Just to give you an idea, you could take a class like CheeseDoodle, and assign an operator== such that if a CheeseDoodle instance is compared with an integer, it will call a method which compares CheeseDoodle.quantity with the supplied integer. But if a CheeseDoodle is compared with a PotatoChip, you could choose to write a method which would declare it true or false depending on various properties of the particular instance of the CheeseDoodle or a particular instance of the PotatoChip.

    Suddenly your
    if (cheeseDoodle.quantity().isEqual(thingamajig))...;
    if (cheeseDoodle.snackfoodindex().isEqual(potatoeChip .snackfoodindex()))...;
    becomes :
    if (cheeseDoodle == thingamajig) ...;
    if (cheeseDoodle == potatoeChip) ...;

    Yeah, it can be abused an obfuscated, I think that might be why Java avoids it, but it is damn handy.

  24. Re:C/C++, not java by Dr.+Eldon+Tyrell+TC · · Score: 2, Informative
    "but some sort of cultural reason you feel C and C++ need to be kept seperate--presumably because you like one a more than the other."

    Yes, you can call C code from C++ and there is no problem as long as the C code still was compiled with a C compiler and then linked with your C++ code.

    The very problem starts when people take code written in C and compile it with a C++ compiler!

    Why? Because for the first look (and sometimes even the second) it works perfectly. But after a while debugging fuzzy problems you recognize that the syntax of the languages are indeed different and if the original programmer was not using a s**t load of brackets (not necessary in C) because he was aware that some morron someday might use a C++ compiler with this code, you are in trouble. This is why I am pointing this out: if you are not aware that they are indeed different you might get into trouble.

  25. Re:C/C++, not java by Anonymous Coward · · Score: 1, Informative

    > How many enterprise web application

    None. However, when we speek about the "linux world" in this context, we usually mean client applications.

    There are *no* java client applications running on Linux. This has technical reasons, for one Swing does not fit into X11 world, second, Sun forbits distributing Java with Free (as in freedom) distributions (Debian, RedHat, Slackware, ...).

    However, there are some Linux applications which are written in a Java variant (GCJ uses CNI, not JNI) which ship with the RedHat Enterprise Linux. But again, these are not java applications but applications written in java and compiled with gcj into native code.

  26. Some hard numbers by johannesg · · Score: 2, Informative
    Just looking at sourceforge for a moment, I see that it has 13785 projects in C, 13922 projects in C++, and 12588 in Java. That places the three languages at roughly the same level.

    No other languages come even close to these numbers, although I still have some hope for the future of Euler. Actually I don't, just kidding ;-)

  27. Re:I'm usiging the original by Decaff · · Score: 3, Informative

    No, it runs in native 32-bit code instead of being emulated in an optimised JVM that makes it only five or ten times slower than native code.

    *sigh* This is nonsense. Its been nonsense for years. For goodness sake, keep up to date. Java is now comparable to C++ speed. Just look back at recent Slashdot articles.

  28. But how much *good* java software is there? by Tracy+Reed · · Score: 2, Informative

    There may be lots of java projects listed on sourceforge but I can't say I have ever downloaded and used any of them except freenet and i2p and they both have their share of java-induced problems. I regularly download software from sourceforge and other open source project sites but it is almost always C or python or perl or something. Are there any java killer apps? I've heard jakarta and tomcat and jboss are popular but they would seem to be rather niche applications, I've certainly never had a use for them nor do I know anyone who uses them although I occasionally see someone on /. or elsewhere mention them. It would seem that java is mainly used server-side. Why is that? For what reason is it not desireable for client applications? I have my own ideas but I would like to know what others think.

  29. Re:I don't use Java by aled · · Score: 2, Informative

    It doesn't fit on a microcontroller (like a PIC)
    So what? who says Java is the right tool for that? on the other hand Java is used in a lot of embbeded projects.

    it doesn't have multiple inheritance
    Thank God for that.

    it requires the right JVM
    C programs when dinamically linked to runtime require the right version of runtime library. So?

    it doesn't have a #include to keep parameterizations in one file
    Include is a Bad Thing. Modern languages don't do that. It even makes compiling slower!

    it is actually write-once-debug-everywhere
    Not true for us. We develop web apps in windows and deploy in windows, as/400 and linux without touch a line. Some other desktop apps require native libs but we need to recompile only those, the Java part is the same.

    too many things in Java are only available as precompiled packages
    I don't know what are you talking except for some database drivers. IBM AS/400 drivers are open source. Anyway you can just any precompiled library because there is no need to recompile them. That's a Good Thing.

    (open source in Java is a very rare thing)
    Not true. In fact in every of our projects we use just core Java libs, open source libs and our own.

    --

    "I think this line is mostly filler"
  30. Depend on how you look at it by Per+Abrahamsen · · Score: 2, Informative
    With regard to "core" code of GNU/linux, Java is only just on top-10 accodung to this analysis, which count lines of code in a distribution. But Java is much more popular for specialised situations, than for general purpose tools.
    Language SLOC (%)
    C 21461450 (71.18%)
    C++ 4575907 (15.18%)
    Shell (Bourne-like) 793238 (2.63%)
    Lisp 722430 (2.40%)
    Assembly 565536 (1.88%)
    Perl 562900 (1.87%)
    Fortran 493297 (1.64%)
    Python 285050 (0.95%)
    Tcl 213014 (0.71%)
    Java 147285 (0.49%)
  31. Re:C/C++, not java by halowolf · · Score: 2, Informative
    Well its interesting that you bring up the phrase "Swing does not fit in the X11 word" (is that world) because Azureus uses SWT (Standard Widget Toolkit), not Swing. SWT is a thin API layer that is integrate with the native window system. It has been used most effectivly in the Eclipse Platform.

    You will find that the windowing performance of a SWT Java application far exeeds that of a Java Swing application, for very obvious reasons.

    Being a avid Eclipse user, I can spot SWT from 50 feet!

  32. Amen to that... by Phil+John · · Score: 2, Informative

    ...some of our clients want real-time chat facilities on their sites (a bit like the liverperson support system), we provide this using a custom built Java chat server.

    Now that we've got proper Non Blocking I/O and you don't need a thread for every connection (or to implement your own multiplexor with JNI) the memory usage of our server app has come down considerably.

    Looking at the latest stats on my performance monitor it's currently dealing with 463 concurrent connections and using roughly 70 megs of memory, which on a server with 2 gigs is nothing.

    --
    I am NaN
  33. Re:C/C++, not java by FatherOfONe · · Score: 3, Informative

    You say Swing is slower than SWT. I say show me the benchmarks. Specifically I want to see how, in a standard business app doing something in SWT will increase a users productivity over Swing. I don't want to see stuff like this window opened in .001 seconds faster.

    I also say that we had AWT which is very similar in design to SWING. I have done some work with Java clients and found Swing to be a huge pain in the ass.... BUT one thing it has going for it is that you know what the heck the layouts are going to look like. Secifically if you develop something with SWT, and run it on different platforms, the windows will look different. That can flat out suck. From a developer perspective I "might" want to have a common look and feel for this app, and SWING provides that. SWT does not. The only advantage of SWT is that it is suppose to be faster, and have the native look and feel of the OS it is running on. I say show me SWT for NetWare? My PDA? My cell phone... you get the idea.

    So again I say show me the advantage of using SWT over Swing. Specifically in performance, that will relate to increase productivity to a user.

    Lastly, to be on topic :-)

    All of our Linux machines run Java in some shape or way. I would agree that Java has played a large factor in Linux growth. I would also say that a reason for Java's growth in the server world is largely in part to Linux and IBM. Without Linux, we would be an all Windows shop, and then we would have to ask why we develop in Java when we are all Windows. Without Java we would have to pick a language that we could easily develop on our desktops (Windows) and then move to test and production. That would probably be some Microsoft language.

    So I say to all the anti Java people who love Linux and open source... We need each other. The Java people want nothing more than for Linux/BSD to become THE OS of choice.

    --
    The more I learn about science, the more my faith in God increases.
  34. Re:C/C++, not java by halowolf · · Score: 4, Informative
    What complexity?

    Why the compounding of a task into another task to achieve the same result. Running the scripts I require to run through Java adds another step to running them that I do not require. Therefore it is a solution to a problem that is more complex than alternate solutions that exist to the same problem.

    How is that complex?

    It is more complex than what I require. Since you do not know what I do, you are hardly in a position to judge. I on the other hand can readily judge whether running my scripts through Java is something that I require. Believe me, its not.

    Is that complex?

    No, and this is where things get delicious, I'm talking about scripting, you know, writing text files with commands in them that you launch using a command interpreter of some kind. Not running a command prompt that the so called "Examples" of yours show. Its actually more complex to call a script from Java than your poor examples reflect. How about a link to demonstrate: BeanShell Example - Calling scripts from Java

    If it is, I think you should be careful about what problems you are trying to solve. Stick to simple ones.

    I think that you should perhaps take some of your own advice. I know how to run a command prompt, I know how to run a script, I know how to run Java. Some other advice I would offer would be to actually not insult people in a public forum. You might not be prepared for the consequences.

  35. Re:C/C++, not java by Decaff · · Score: 2, Informative

    why to use something you do not need? if python is enough, why use jython?

    Because it gives you more power. With scripting languages on Java you have access to all Java APIs - GUIs, threading, collections, network, multimedia, etc. It also allows you to seamlessly mix-and-match bits of code in different languages: You can call your Java code from the scripting language.

    Because it allows for code-reuse. If you already have code written in Python, why bother to re-write it if you have to develop in Java? If you have some neat Java libraries, you can call them up from Python, TCL, BeanShell, Smalltalk, Prolog, Ada, COBOL, Pascal, Forth, Modula, Oberon, or any other of hundreds of languages that run on the JVM.

  36. Re:I don't use Java by aled · · Score: 2, Informative

    And I can't run it on my NEW Zaurus PDA, because it was compiled against an OLDER (?) Different (certainly) JVM.
    I googled a little and it seems that you are trying to use a full J2SE (standard edition) desktop app in a PersonalJava or J2ME (micro edition) JVM which are meant for differents apps. Just because has a Java somewhere doesn't mean you'll get to run any Java app. There are different specs for J2ME and J2SE, it's has nothing to do with the version, the same way Oracle isn't expected to run in your PDA. The app must be developed to the platform. In Java that means J2SE for PC and servers and J2ME for phones/pdas.

    And - if you can't handle multiple inheritance, well, you aren't a Real Programmer.
    Real Programmers don't use languages, they change the bits in memory by hand. Everyone knows that.

    Consider the following Real Life Scenario: Rare bug manifests itself in a method. You fix it. But did you fix the other N bazillion places where that same method is implemented (mostly by cut and paste, because most programmers are lazy)? Heck, can you even _find_ all those places?
    Well, one can program bad in ANY language. I have found that C programmers tend more to copy and paste because of not using OOP. Most C++ programmers I found understand perhaps 50% of the language, no one I have found (in person) that uses MI. Java programmers tend to reuse some more because they start by learning inheritance. Your milleage may vary.

    --

    "I think this line is mostly filler"
  37. Re:Exactly - Java is not about the O/S by mcc · · Score: 2, Informative

    So the whole Sun fear of "embrace and extend" is completely moronic. You can ALREADY extend Java in completely incompatible ways.

    I think from Sun's perspective this is not a problem because JNI, or things like Apple's cocoa bridge, are fairly insular. You don't *have* to adopt software with a JNI component, and if you do this you pretty much agree that you're being hardware tied to some extent.

    I think Sun's worry about "incompatibilities" have mostly come from worries over silent, endemic incompatibilities. Things like that early Microsoft java VM where the API implementation randomly switched the call order for H and V values. That's a much more insidious problem because rather than hardware tying it introduces hardware incompatibility. If someone tries to run a Java program with a JNI component on the wrong platform, they get a "can't run" error and they know to contact their vendor. If someone tries to run a java program on a platform with a VM incompatibility, and it sort of works... well what do you do there? First off that's far more embarrassing to the Java platform, because instead of "your program was hardware-tied", it's "your program didn't work right".

    Second off it's far harder to fix; with an incompatibility issue with JNI or some other method of "escaping" the Java world, the incompatibility issue is modular and quarantined at least to some extent. The fix there would be to switch out the native module with a compatible one, which may not be easy but is at least doable. An incompatibility where different VMs may behave differently with respect to a single piece of java code though... how do you deal with that? That's not something you can fix by swapping out the incompatible portion, it infects the entire problem. THIS is what Sun is worried about-- limiting the areas where you break WORA to quarantined modular components, not enforcing WORA under all circumstances-- and it's something that has *has been a problem with Java in the past*, with some of Microsoft's "extentions" to Java.

    Of course there are ways around this, and I'm not saying Sun is being totally reasonable, but this is basically what Sun's problem here is I think. Note that they're being very tight-fisted about this compatibility thing not just at the source level, but also in terms of who's allowed to be certified as adopting to the Java standard. From what I have heard it is very hard even to get the Java certification suites if you are trying to create a compatible implementation of Java, because they're trying to make sure all Java implementors conform to the standard.