Slashdot Mirror


The Future of Java?

Todd AvErth writes "Judge Motz recently ordered Microsoft to distribute Sun's JVM with every Windows product. Salon decided to pipe up about it with an editorial musing about whether or not it's too late. Most of it isn't all that interesting, but some of the comments from Ximian developer, Miguel de Icaza point to the advantage of being able to compile from multiple languages. Anyone know of any projects to compile JVM bytecode from other languages?" Update: 01/23 16:00 GMT by M : Comments were disallowed when this story was originally posted; fixed now. My mistake (although KDE3's stupid mouseover-activates-form-elements user interface, now finally fixed in the latest versions, has to take some blame too).

475 comments

  1. Re:Poor Micheal by Randolpho · · Score: 0, Offtopic

    Heh... yeah, and the worst part is that he had no friends.

    On Slashdot, that is. ;)

    --
    "Times have not become more violent. They have just become more televised."
    -Marilyn Manson
  2. Languages for the Java VM... by The+Wookie · · Score: 5, Informative

    can be found here.

    It doesn't mention SmartEiffel, though, which does generate byte codes. There are probably many others as well.

    1. Re:Languages for the Java VM... by Neon+Spiral+Injector · · Score: 2, Interesting

      So where are the processors that Sun promissed that would run Java bytecode natively?

    2. Re:Languages for the Java VM... by Usquebaugh · · Score: 2, Insightful

      I thought Sun said it was possible, they never promised this. If you have a link where Sun is saying this WILL happen I'd be most interested.

    3. Re:Languages for the Java VM... by malachid69 · · Score: 1

      Hey! I was getting ready to post that link!

      Good job :)

      Malachi

      --
      http://www.google.com/profiles/malachid
    4. Re:Languages for the Java VM... by malachid69 · · Score: 5, Interesting

      I own two. I have the TINI board (www.ibutton.com) and the PTSC chip (www.ptsc.com).

      Also, it is very common on handhelds and cell phones. My Handspring has Sun's JDK and IBM's JDK on it, as well as Java3D.

      Personally, I am still debating making my own PDA using an open-core java chip and OLED touchscreen.

      Malachi

      --
      http://www.google.com/profiles/malachid
    5. Re:Languages for the Java VM... by Zico · · Score: 2, Funny

      They'll probably be released right around the same time that we're all wearing those Java rings that Chompers McNealy always used to talk about.

    6. Re:Languages for the Java VM... by CorwinOfAmber · · Score: 3, Informative
      So where are the processors that Sun promissed that would run Java bytecode natively?

      There was a lot of talk about this in the various Java newsgroups in the mid-to-late '90s (here is a typical thread on the subject). From what I remember, Sun originally thought that specialized Java processors, or even coprocessors on a daughterboard, might be a good idea. But, because the Java VM is a stack-based machine, implementing it in silicon turned out to be harder than expected, for less benefit than was hoped. I think they ultimately decided that it would be more cost effective to improve the JIT than to develop a Java CPU.

      I don't have any hard data or links to back any of this up, it's just what I remember.

      --
      My future's determined by Thieves, thugs, and vermin -- The Offspring
    7. Re:Languages for the Java VM... by lgraba · · Score: 5, Informative

      Here are a few of the more notable Java Processors ones:

      www.ajile.com (and www.systronix.com has a few boards built witht the processors).

      www.ptsc.com

      Also, the Jazelle technology from ARM embeds a java processor section into an ARM chip:

      http://www.arm.com/armtech/jazelle?OpenDocument

    8. Re:Languages for the Java VM... by edyavno · · Score: 1

      Sun never promissed native compilers, they just said it was possible to do using the available JVM specks.
      With the current JVM and JIT (just in time) compilation optimizations, running bytecode in most cases is similar in speed to running native code.
      However, if you insist, here's an article on IBM developerworks listing quite a few 3rd party native java compilers.

    9. Re:Languages for the Java VM... by Richard_Davies · · Score: 2, Informative

      The chips aren't being made by Sun, but by ARM who provide jazelle. ARM is a much bigger player in the embedded market anyway. Also, look at how many mobile phones already do and will support Java and you will see why Java on silicon is alive and well.

    10. Re:Languages for the Java VM... by Pxtl · · Score: 2, Interesting

      I'd be more interested in the other way around - systems to compiled Java code into X86 bytecode. I like Java as a language, but I hate the sluggish speed and never use non-X86 chipsets anyways.

    11. Re:Languages for the Java VM... by kevlar · · Score: 1

      Speed issues aren't related to Java byte-code. In fact, the only real speed issues now are the same ones inhenernt in all OO languages.

      My biggest problem with Java is that you can't compile directly to a static executable. This makes deployment nearly impossible for any kind of shareware software. I think Sun really f'd that up bad. Then again, they aren't exactly targeting end-users... more enterprise environments

    12. Re:Languages for the Java VM... by p3d0 · · Score: 2, Informative
      You're joking, right? There are tons of static and dynamic compilers from Java or bytecode to native code. There's IBM's HPCJ and gcj just to name two static compilers, plus (of course) the hundreds of JIT compilers out there.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    13. Re:Languages for the Java VM... by spen · · Score: 1

      A better question is "anyone know of any languages that don't run on the JVM?"

      A quick Google search turns up a lot of info. I wish stories could be moderated, this one 'troll' for example.

      Java does have a lot of disadvantages, mainly it's a time/space pig, but it is the right tool for some jobs. The problem is that too many enthusiasts insist on using their favorite tool for every job, even if it's a horrible match. See the 'Golden Hammer' in the anti-patterns book.

      An important part of any developer's job is knowing how to evaluate the available solutions, whether it's algorithm, language, or platform.

    14. Re:Languages for the Java VM... by dfekke · · Score: 1

      I use a language every day that compiles into Java byte code, that is not Java.

      It is called ColdFusion MX.

    15. Re:Languages for the Java VM... by Pieroxy · · Score: 2, Interesting

      I think you might be interested in making a simple test :


      int j;
      for (int i=0 ; i<1000000 ; i++) {
      j=i;
      }


      and then notice that with any JVM in the market, this code is still 2-3 times slower than the same one compiled with gcc (for example)

      So long for the JITs...

    16. Re:Languages for the Java VM... by Waffle+Iron · · Score: 1
      So where are the processors that Sun promissed that would run Java bytecode natively?

      Not necessary. These days, there are already layers of abstraction between the object code and the CPU's internal core. Most modern processors don't even run their own assembly code natively. An Athlon or Pentium translates the x86 code stream into native RISC operations.

      Why invest hardware design effort into translating Java bytecodes directly when the CPU can translate a pre-existing standard code stream like x86 opcodes. That way, you don't have to write a new xxx to Java bytecode compiler for each of the hundreds of languages out there; instead you write a Java bytecode to yyy compiler for each of the handful of existing CPU architectures. Moreover, your CPU can run much more existing software.

    17. Re:Languages for the Java VM... by Anonymous Coward · · Score: 0

      After reading a couple of books on C# and the mono site my understanding that what makes the .NET CLR supperior is not a common VM, but how *easy* it is to reuse components from different languages and the speed benefits of the .NET design. Like being able to put objects on the stack or write a component in C++, then inherit from and extend that component in some other (several other) language *simply*, etc. Can you do that with Java VM?
      While using a lot of languages may not be necessary for "everyone", everyone doesn't make tools for "everyone" else to use.
      If Gnome were for Java developers only, you'd probably have a point, why make it easy on Python, C++, etc. developers to access components AS if they were written in the app developers language of choice.

      Given that, it doesn't make any difference how many JVM there are. One or a thousand, since your comparing apples to oranges.

      The seems like a straw man arguement to me...
      but only MS knows FUD, so I'm sure I'm completely wrong.

    18. Re:Languages for the Java VM... by Anonymous Coward · · Score: 2, Funny

      I just tried this, but your code was flawed... I optimized it thus:

      int j = 1000000;

      and it seems to run just as fast under the JVM as the C++ implementation under gcc. ;)

    19. Re:Languages for the Java VM... by namespan · · Score: 4, Insightful

      Languages for the Java VM...can be found here...

      And that page has been up for at least 4 years, and comes up top on the Google search "Languages for the Java VM." So I think the real question is: why does the meme that Java bytecode can only be generated from javacc continue? Even if you regard most of the things on that page as academic, they're at very least proof-of-concept (and ad naseum at that, due to sheer numbers). Not to mention what the presence of clearly non- academic implementations like Jython.

      I don't know whether or not Sun intended to design Java so that this was possible or easy. But it seems pretty obvious to me: you can target a VM as easily as you can target a processor, and that's what any compiler does. Why doesn't the Java-only for Java-VM meme die?

      --
      Libertarianism is rich wolves and poor sheep playing gambler's ruin for dinner.
    20. Re:Languages for the Java VM... by bloo9298 · · Score: 1

      Yeah, but what if you add in the JVM startup time? :=)

    21. Re:Languages for the Java VM... by gabbarsingh · · Score: 1

      Check out this PDA reference platform by Ajile. The processor is aj-100, 100% native java CPU. So even the device drivers are in Java.

    22. Re:Languages for the Java VM... by Kailden · · Score: 1

      Most modern processors don't even run their own assembly code natively. An Athlon or Pentium translates the x86 code stream into native RISC operations

      Althons convert to RISC instructions?? I always thought Athlon just had an extended set of instructions...for certain tasks...like to see some info on the conversion to RISC instructions...got a link? ...write a Java bytecode to yyy compiler for each of the handful of existing CPU architectures

      Certainly the Java bytecode to yyy compiler is the definition of a JVM itself? The JVM is providing a common interface "virtual machine" that runs on top of "the handful of existing architectures"

      --
      I need a TiVo for my car. Pause live traffic now.
    23. Re:Languages for the Java VM... by Anonymous Coward · · Score: 0

      Not important, because usually programs run longer then 10 seconds :-)

    24. Re:Languages for the Java VM... by Anonymous Coward · · Score: 0

      Personally, I am still debating making my own PDA using an open-core java chip and OLED touchscreen.

      Good lord, why? Sure it'll be neat to have built your own PDA, but using it is going to suck. You're going to look like a total douchebag when you're scribbling notes into some 2 pound PDA with duct-tape and dried glue all over it.

    25. Re:Languages for the Java VM... by Anonymous Coward · · Score: 0

      Google "microcode" or "micro-ops" or "u-ops". Many processors have very RISC-like pipelines, and each architecture-visible instruction (IA32 opcode, for example) becomes one or more microcode operations that drive the pipelines. Elaborate addressing modes and instructions (like ENTER or LOADALL or call gates on IA32) are likely to be many micro-ops long. Transmeta took this one step further by writing a IA32-to-native-instructions translator in software instead of merely using a lookup table.

    26. Re:Languages for the Java VM... by King+of+the+World · · Score: 1
      Nah... basic interface design says that people want an interface response in .5 seconds.

      No one likes waiting for their TV to warm up and display a picture.

    27. Re:Languages for the Java VM... by Anonymous Coward · · Score: 0

      All processors in the last few years haven't been RISC[tm] but they've been doing RISC stuff for speed gains. Some of it is better than RISC.

    28. Re:Languages for the Java VM... by Kailden · · Score: 1

      Google "microcode" or "micro-ops" or "u-ops".

      Funny, I did just that ("microcode" or "micro-ops" or "u-ops") and it come up with what looks like a German site...reminds me of the cartoon I read once that showed someone selling a large computer to a person, and it was captioned "Unfortunately our product does require a knowledge of rocket science in order to use. However, we do provide a engineer with the package." And it shows a German speaking fellow greeting the customer. Now, back to google to look them up seperately...

      --
      I need a TiVo for my car. Pause live traffic now.
    29. Re:Languages for the Java VM... by ClosedSource · · Score: 2, Insightful

      I suspect they concluded that there was no market for it. That's the real reason they were so upset with MS. By allowing more direct access to Windows then what "pure" Java allows, MS made hardware acceleration unnecessary on the dominant desktop platform.

      Thus their strategy:
      Sell Java's WORA capabilities
      Get everyone hooked on Java
      Release proprietary hardware accelerator for completive performance
      Profit!

      has failed.

    30. Re:Languages for the Java VM... by Pieroxy · · Score: 1

      Ok, here is the output for the test I did:

      $javac -O Test.java
      $time java Test
      100000000

      real 0m10.944s
      user 0m9.550s
      sys 0m0.130s
      $gcc -O3 test.c -o test.o
      $time test.o
      100000000
      real 0m0.483s
      user 0m0.470s
      sys 0m0.010s


      And here are the files used :
      test.c:

      int main(char**argv) {
      int j=0;
      int i;
      for (i=0 ; i<100000000 ; i++) {
      j=(i+1-j)*2;
      }
      printf("%d",i);

      }


      And Test.java:

      public class Test {
      public static void main (String args[]) {
      int j=0;
      int i;
      for (i=0 ; i<100000000 ; i++) {
      j=(i+1-j)*2;

      }
      System.out.println(i);
      }
      }


      10 seconds for Java vs 0.5 seconds for C. The JVM takes approx 1/2 second to start. I was actually wrong in the order of magnitude: 20x!!!

      Of course the (stupid) test is not really a good benchmark but still!!! 20X!!!

      I'll need the output for YOUR test in order to believe it!

    31. Re:Languages for the Java VM... by spongman · · Score: 1

      I get 1.1s (0.3s startup time) for .NET on my pIII/550MHz.

    32. Re:Languages for the Java VM... by Corvus9 · · Score: 4, Informative
      ... can be found here
      Many posters mention this page. In fact, I have spoken with other Java advocates who mention this page as proof the JVM is language-neutral. However, they do not mention that most of the "languages" on this page are Java interpreters or code generators, and nearly all the remainder are vapourware or proposals, not actual shipping products.

      Rogers Sessions took the time to investigate every single one of the projects on the JVM languages page. He posted his results to the ObjectWatch site. After long research, he found only 8 that were actual implementations of a non-Java programming language for the JVM. Of those 8, in his opinion not one was available or suitable for professional development.

      In his conclusion he states "I believe that Simon Phipps and other Sun luminaries have greatly exaggerated the degree of language neutrality supported by the Java platform".

    33. Re:Languages for the Java VM... by malachid69 · · Score: 1

      Although tempted to not reply...

      You could actually do really well with current hardware designs. For example, a single chip for cpu/mmu/etc... Memory could easily be done with a smart media or something (thus allowing multiple users to save different boot-sessions). The OLED would be lighter than LCD, and take less battery power (since no refresh required). Etc

      Sure, home-made would be more bulky if duplicating what others do -- but perhaps we don't need to duplicate them? I have an entire computer running on a single SIMM at home.

      Malachi

      --
      http://www.google.com/profiles/malachid
    34. Re:Languages for the Java VM... by Anonymous Coward · · Score: 0

      Java SUCKS on PDAs, you can argue against the classic "Java is slow" arguement on PCs and make a good case, but on PDAs it really is slow. PDAs are really small and low level, a lot of people don't program for Palm compatibles in C++ because it's got too high of an overhead, Java is far worse. I'm sure a PDA with a native Java chip would be great, but Java sucks on PDAs now.

    35. Re:Languages for the Java VM... by bnenning · · Score: 1

      Mac OS X 10.2.3, 800 Mhz G4, gcc 3.1, JDK 1.3.1

      % time ./a.out
      100000000./a.out 1.87s user 0.03s system 90% cpu 2.090 total

      % time java Test
      100000000
      java loop 2.24s user 0.10s system 86% cpu 2.713 total

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    36. Re:Languages for the Java VM... by G-funk · · Score: 1

      Stuff languages that compile to the JVM - What I want is something that compiles java to win32/linux executables. And not a loader like vb used to be either, actual compilation.

      --
      Send lawyers, guns, and money!
    37. Re:Languages for the Java VM... by bnenning · · Score: 1
      Rogers Sessions took the time to investigate every single one of the projects on the JVM languages page.


      Not exactly, note this gem he hid in his "analysis":

      Tied for third place were the categories Freeware and School/Hobby projects at 19 entries each. Both of these categories include technologies that show the feasibility of generating JBC from sources other than Java (a capability that is not in dispute), but do not include actual supported implementations that would be used in a large commercial project.

      Yeah, who would want to use free software written by hobbyists for anything important?
      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    38. Re:Languages for the Java VM... by Anonymous Coward · · Score: 1, Insightful

      Sessions only took the time to investigate the project's maintainers. He didn't show any real interest in whether any of the projects are useful, but only in whether "serious commercial support" is readily available. (IMHO the guy's been beholden to proprietary vendors for so long that he thinks that's the way the industry must be.)

    39. Re:Languages for the Java VM... by Pieroxy · · Score: 1

      My platform is sun Solaris Dual 450MHz... Ironic that the JVM shows worse on Solaris that Mac OS X...

    40. Re:Languages for the Java VM... by Anonymous Coward · · Score: 0

      When all you know how to use is a hammer, well then everything starts looking like a nail.

    41. Re:Languages for the Java VM... by Tom+Davies · · Score: 1

      "I believe that Simon Phipps and other Sun luminaries have greatly exaggerated the degree of language neutrality supported by the Java platform".

      It doesn't exist so it can't exist?

      Perhaps there is no *demand* for other languages generating JBC?

      How many of the languages available for .NET are really those languages, rather than versions tweaked for the .NET CLI?

      Tom

      --
      I have discovered a wonderful .sig, but 120 characters is too small to contain it.
    42. Re:Languages for the Java VM... by Nexx · · Score: 1
      But there's a bug in your code. The original:
      int j;
      for (int i=0 ; i<1000000 ; i++) {
      j=i;
      }
      is the equivalent of:
      j = 999999;
      and not:
      j = 1000000;
      Yes, I'm a pedantic bastard :P
    43. Re:Languages for the Java VM... by allenw · · Score: 2, Funny

      Hmm...

      Ultra 2/2x168MHz:

      $ time ./a.out
      100000000
      real 0m0.03s
      user 0m0.01s
      sys 0m0.00s

      $ time java Test
      100000000

      real 0m4.90s
      user 0m4.60s
      sys 0m0.15s

      OS X 2x800MHz:
      $ time java Test
      100000000

      real 0m2.26s
      user 0m1.98s
      sys 0m0.13s
      $ time ./a.out
      -ksh: ./a.out: cannot execute [Exec format error]

      real 0m0.01s
      user 0m0.00s
      sys 0m0.01s

      Looks to me like Java wins considering that the C version wouldn't even run. ;p

      [For those playing at home: You don't have to "recompile" Java applications when you cross platforms. ]

    44. Re:Languages for the Java VM... by miniver · · Score: 4, Insightful
      Rogers Sessions took the time to investigate every single one of the projects on the JVM languages page. He posted his results to the ObjectWatch [objectwatch.com] site. After long research, he found only 8 that were actual implementations of a non-Java programming language for the JVM. Of those 8, in his opinion not one was available or suitable for professional development.

      Roger Sessions ... now there's an unbiased observer. Once upon a time, Roger was a CORBA spec writer, until he basically got booed out of the CORBA camp for non-performance (this spec is going to be SO good when it's finished ... really!) Then he became a COM/DCOM/COM+ apologist for Microsoft. Read through his ObjectWatch newsletters and see if you can spot any unbiased commentary on technologies; you will quickly observe a trend: Microsoft good, non-Microsoft bad. I won't say that Roger is a complete bought-and-paid-for Microsoft shill, but he gets his books published by Microsoft Press... you draw your own conclusions.

      As for the JVM's language-neutrality (or lack thereof): so what, big deal.

      There is no such thing as a language-neutral platform, be it hardware or virtual. Every computer instruction set that has been developed to date has had biases built in; it's inevitable. The system designer has certain goals, and usually has a target set of capabilities, which may only work in assembly language. Take the X86 instruction set: only a fraction of the X86 instructions are useful to a C compiler. The rest of the instructions can only be used by writing assembly language. The only hardware instruction sets that I can think of that are completely accessible by a higher level language are those that were specifically designed to implement a single language (Forth, LISP), and they make lousy targets for other languages.

      The question is: does it matter? There are very good reasons why the JVM doesn't allow pointer arithmetic and pointer casting: the designers wanted a provably secure runtime environment, so they excluded unsafe operations. So you can't implement C/C++ for the JVM; big deal. If you really need those capabilities, you're better off operating outside of the JVM and interacting via JNI or some form of RPC. That said, there are still plenty of languages that are written in Java, compile to Java, or compile directly to Java bytecodes; certainly more than currently target the .NET CLI or any other virtual machine. Use one of those, or write your own.

      --
      We call it art because we have names for the things we understand.
    45. Re:Languages for the Java VM... by smittyoneeach · · Score: 1

      Yet certainly irritating. Consider GeneSpring, a fairly common BioInformatics application. On a two year old laptop, you click the icon, go pour the tea, and return to see it just waking up.
      The argument in favor of Java for this is that the interface is graphically intensive, and the audience is about as cross-platform as it gets, so you require a robust, platform agnostic system.
      Having said all that, I still fall short of faith in all of this JIT business.
      It still sounds like yet another layer of indirection.
      The counter-argument, 'go Assembly if you really care about performance', is noted.
      But stuff like Boost and the STL still fascinate...

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    46. Re:Languages for the Java VM... by Pieroxy · · Score: 1

      that is actually scary. On Ultra 2/2x168MHz Java is 163 times slower than C... (On our non-representative stupid loop)

      Who the hell did pretend that JVM+JIT=native ?

    47. Re:Languages for the Java VM... by Pieroxy · · Score: 1

      My original code was just there to illustrate my very-stupid-loop-just-to-make-a-point ;-)

      I must admit I didn't even try to compile it nor to run it :-(

      That's why I answered with a real example later on, I should have done that in the first place. But... laziness took over, as always!

    48. Re:Languages for the Java VM... by Nexx · · Score: 1

      Eh, JVM+JIT sucks ass for such small code. Try it without the JIT, and see what happens :)

      Just a hunch, though :P

    49. Re:Languages for the Java VM... by miniver · · Score: 1

      I ran your test on my PIII/600 and Athlon XP 1800, running RHL 8.0, Sun Java 1.4.1, and GNU Java 3.2. Here are my results:

      ..........System: _PIII_ Athlon

      Unoptimized C...: 1.467s 0.489s
      Unoptimized Java: 1.137s 0.308s

      ..Optimized C...: 0.346s 0.134s
      ..Optimized Java: 0.822s 0.296s

      ......Native GJC: ..n/a. 0.513s

      Note that I ran the Java test using java -server Test.java; I found the server JVM to be faster for this code than the client JVM.

      So on my systems, for this test program, unoptimized Java is faster than unoptimized C, optimized C is 2.5 times faster than optimized Java, and GCJ is too immature to bother with. This matches my experience (7+ years Java) and my expectations. If I need to do numerical computations, there are faster languages than Java. On the other hand, if I'm doing distributed applications, where network bandwidth and latency are apt to be factors, Java will be as fast as C, and much easier to code reliably, given the built-in support for threading. And on the gripping hand, since I'm more productive in Java than in C, and since Java doesn't have to be recompiled for every platform, Java is probably the better language -- for my purposes. You can use whatever you want to use.

      --
      We call it art because we have names for the things we understand.
    50. Re:Languages for the Java VM... by Anonymous Coward · · Score: 0
      This from the posted link:
      This month's winner of the Quotation of the Month Contest is Roger Sessions. Roger gets a choice of a personally autographed copy of Roger Sessions's new book, "COM+ and the Battle for the Middle Tier", or the ObjectWatch BBQ apron (also can be personally autographed), both of which he has and loves.
      Apparently ObjectWatch is Roger Sessions' Fan Club hosted by none other than Roger Sessions. I hope he enjoy's the personally autographed book. Scary ...
    51. Re:Languages for the Java VM... by miniver · · Score: 1

      One other comment on your test: Using the optimizer (-O3) with GCC, your code effectively goes from:

      int main(char**argv) { int j=0; int i; for (i=0 ; i<100000000 ; i++) { j=(i+1-j)*2; } printf("%d",i); }

      To this:

      int main(char**argv) { int i; for (i=0 ; i<100000000 ; i++) { } printf("%d",100000000); }

      So what you're showing is the efficiency of the GCC optimizer on an otherwise useless chunk of code. Hardly a fair test.

      --
      We call it art because we have names for the things we understand.
  3. Other languages by RDW · · Score: 0, Redundant

    Anyone know of any projects to compile JVM bytecode from other languages?

    One or two...

    1. Re:Other languages by Anonymous Coward · · Score: 0, Redundant

      www.jython.org

    2. Re:Other languages by bmetzler · · Score: 1
      By inlcuding other interpreters into Windows and making a good advertisement of it, Microsoft can prove that JVM is not the only choice developers have for cross-platform development.

      I don't think cross-platform compatibility is a high priority for Microsoft.

      I don't like Microsoft's monopoly, although it's the only example of a bad market behaviour - look what Apple is doing.

      If Microsoft is the only example of bad market behavior, and this market behaviour is foung to violate antitrust law, then shouldn't Microsoft have to pay some sort of retribution for that?

      You may have other preferences then Java, but that doesn't make Java a bad thing.

      -Brent
  4. a lot by Anonymous Coward · · Score: 1, Informative


    see http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.ht ml

  5. That's a joke, right? by Curt+Cox · · Score: 1

    Anyone know of any projects to compile JVM bytecode from other languages?

  6. Ada by mgaiman · · Score: 3, Funny

    Ada has a bytecode generator. See here

    So does that mean that my forced ada classes in college were useful?

    1. Re:Ada by Anonymous Coward · · Score: 0

      So does that mean that my forced ada classes in college were useful?

      Nope, sorry.

    2. Re: Ada by Black+Parrot · · Score: 1


      > So does that mean that my forced ada classes in college were useful?

      Did it make a better programmer out of you?

      --
      Sheesh, evil *and* a jerk. -- Jade
    3. Re:Ada by Captain+Rotundo · · Score: 1

      I loved those Ada classes at GW. Prof. Feldman almost turned me into an Ada lover! But alas I haven't even seen a line of Ada since I left GW. Talk about dodging a bullet, I'd probably prefer to take up self-mutilation instead at this point.

    4. Re:Ada by Anonymous Coward · · Score: 1, Informative

      A little more rescent link on JGNAT...

      ftp://cs.nyu.edu/pub/gnat/jgnat

    5. Re:Ada by peter_hagemeyer · · Score: 2, Informative

      I use ADA everyday! Most of it, err syntax and such, is part of PL/SQL.

    6. Re: Ada by Anonymous Coward · · Score: 0

      I thought about learning Ada for a while. I did the usual net research, but discovered that data types like integer didn't have standardized sizes. So, I didn't bother learning Ada. Java is my OO language, and C is for everything else.

    7. Re: Ada by Black+Parrot · · Score: 3, Informative


      > I thought about learning Ada for a while. I did the usual net research, but discovered that data types like integer didn't have standardized sizes. So, I didn't bother learning Ada.

      That's an odd reason. Did your research tell you that it will give you a default size, but you can coerce any size you want if you have special requirements?

      The whole point of the numeric representation business is to allow you to specify your programs so that they will run correctly on any hardware you port them to. But if you don't need that kind of power, you just take the default.

      --
      Sheesh, evil *and* a jerk. -- Jade
    8. Re:Ada by lost+sheep · · Score: 1

      Glad to see that some place other than wvu.edu has forced Ada classes. But there is a wonderful side to all this exposure to Ada--you can't know programming nirvana without first knowing hell.

      --
      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Lost Sheep to Shepard, you got your ears on?
    9. Re:Ada by atholbrose · · Score: 1

      Since that page is hopelessly out of date, no, it doesn't.

      Intermetrics no longer exists as a company, and after several mergers is a consulting company that no longer sells software. Aonix' ObjectAda no longer targets the JVM.

    10. Re: Ada by James+Lanfear · · Score: 2, Informative

      I did the usual net research, but discovered that data types like integer didn't have standardized sizes. [...] and C is for everything else.

      C is far worse about unspecified integer ranges than Ada.

  7. The Future of Java? Even Brighter!! by smd4985 · · Score: 3, Interesting

    I like the article, and I think it is easy to see that Java is going to continue to be a force.

    On the server side it has always been a great solution (great for building complex applications, no performance degradation with 'backend' code, and very stable and safe).

    On the client side, the MS/Sun ruling will be a huge boon to the applications side - of course developers will start building client side apps! "If the JVM is there, they will come" :) Sure Swing is a little sluggish, but when everyone is running a p4 2GHz, it really doesn't matter....

    --
    smd4985
  8. A duck by SerpentMage · · Score: 1

    Lets see.....

    Java c syntax
    C# c syntax

    Java VM byte code that gets compiled and executed on the fly .NET VM IL code that gets compiled and executed executed on the fly

    Java single inheritance model
    C# single inheritance model

    Java interfaces
    C# interfaces

    Ahh.... If it walks like a duck, quakes like a duck and tastes like a duck, then it is a DUCK!

    These arguments that .NET allows "other" languages, is pure BS. Does .NET allow IL like C++? NOPE! But so long as the language behaves like C# everything possible. Well gee DUH! The same goes in the Java world.

    I like C# and I like Java, but lets leave it that they are the same darn thing! Except one was created to compete against the other!

    --

    "You can't make a race horse of a pig"
    "No," said Samuel, "but you can make very fast pig"
    1. Re:A duck by Gortbusters.org · · Score: 1

      I remember this argument when I was talking to an MS employee before .NET was so widely available. He would say I could write Perl, PHP, Java, C, C++, I could write anything I wanted and .NET - a new paradigm - would solve all my problems.

      My response: Heh.

      --
      --------
      Free your mind.
    2. Re:A duck by Anonymous Coward · · Score: 0

      Does .NET allow IL like C++?

      VS.NET 2003 does...

    3. Re:A duck by The+Bungi · · Score: 2, Insightful
      These arguments that .NET allows "other" languages, is pure BS. Does .NET allow IL like C++? NOPE!

      I don't think you understand what IL is. It's not bytecode, at least not in the Java sense. You can certainly write an front-end compiler to generate IL from C++ or Haskell or Scheme or FORTRAN or whatever you want. In fact, VC++ 7 does precisely that if you use the managed C++ extensions to write .NET assemblies instead of normal PE binaries.

      Further, IL is not C# specific - the notion that a language has to "behave like C#" to function within the .NET CLI/CLR is laughable at best and FUD-ish at worst. It is completely language agnostic. As a matter of fact, you can write entire .NET assemblies using nothing but IL - sorta like writing GUI applications in ASM. Not that you would *want* to do that, but at least you *can*. IL is fully documented.

      There are a few good books by Wrox, O'Reilly and MS Press that deal exclusively with IL - I'd suggest you give at least one a cursory look before posting things like these.

    4. Re:A duck by Zeinfeld · · Score: 2, Flamebait
      These arguments that .NET allows "other" languages, is pure BS. Does .NET allow IL like C++? NOPE! But so long as the language behaves like C# everything possible. Well gee DUH! The same goes in the Java world.

      That is pure bull shit, C++ is sufficiently screwed up that nobody can get it to run in managed code. However Microsoft have got pretty much every other language - Basic, Python, Eifel, Cobol, Perl, Scheme etc. to run. So the claim that .NET is language neutral is not disproved by choosing the single contrary data point that Microsoft themselves make no effort to hide. The only major languages that don't run are Common Lisp and C++, both of which have multiple inheritance which language design has been backing off from for years.

      As for C# 'copying' single inheritance from Java, COM had single inheritance from the get go. I would be very surprised if Microsoft didn't have coding rules that prohibit using multiple inheritance and compiler flags to disable it for internal use. Every large software house that tried C++ in the early days discovered that multiple inheritance led to disaster. The programs could only be understood by their original authors.

      C# borrows some stuff from Java but it borrows rather more from objective C. It also has meta-data tagging which if you know how to use it is massively useful.

      Sure C# could have been an evolution of Java in the same way that Java was an evolution of C. The only reason it wasn't was Sun's decision to insist on full control of Java and sicking lawyers on Microsoft for wanting to use it to do other things.

      Sun has repeatedly promised to make Java open and every time it has reneged. The Java Community Process was created to ensure that Sun kept control of Java, it is not an open standards process in any meaningful sense of the term. Sun retain effective control over every aspect of Java language design. The JCP is independent in the same way Vichy France was independent of Germany.

      What Microsoft wanted to do was to use Java as a replacement for C++. To do that they had to have a bunch of stuff that Java didn't have so they added it. That is how every language prior to Java has evolved. For years the standard for Fortran was VAX Fortran.

      Sun's hardware business is collapsing under pressure from low cost Linux on Intel boxes. They have failled to make any money from Java, execept by using it to drive sales of their hardware boxes to dotcoms when those still existed. If you think the SCO/Unix situation is bad just wait a few years until Sun has gone the way of SGI and their lawyers are looking to extract whatever value they can from their 'Intellectual Property'.

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
    5. Re:A duck by AMK · · Score: 2, Informative
      However Microsoft have got pretty much every other language - Basic, Python, Eifel, Cobol, Perl, Scheme etc. to run.
      Um, that's not true. The Python .NET work was an experimental effort that was incomplete, impractically slow, was never used for production work by anyone, and is no longer being developed or maintained. Perl.NET takes the existing C Perl interpreter and interfaces it so you can write .NET components, but Perl isn't being translated to CIL. The only Scheme compiler I can find implements a subset that doesn't support continuations.

      I don't know why no one has called Miguel on his claim that you have to translate everything to Java, but .NET provides a happy shiny world where all of the languages are well-supported. Clearly that's untrue.

    6. Re:A duck by Anonymous Coward · · Score: 0

      blah, blah, blah!

      SOOO! All that you've said is the same as with Java Byte Code! IL is marginally better at being language agnostic, but _so_what_! .NET did not allow even _one_ language to come over untouched/unchanged! Once again for all you logically challenged:

      'Managed' C++ != C++
      Visual Basic'.NET' != VB
      Perl.NET != Perl (laughably so)
      Python.NET != Python
      J# != Java
      C# is the only one and since it was created for .NET well, like the parent post said _DUH_!

    7. Re:A duck by Anonymous Coward · · Score: 0

      You sir, are a moron. .NET has not allowed one single language to move over untouched. Not one. Not even one!

      See the parent post above. C++ is not a single data point since all the data points prove the same thing. .NET is not language agnostic. The fact that you point to Perl.NET and Python.NET is laughable! These are such bastardized versions and the java version of Python is soooo much better/advanced than Python.NET. heh heh heh.

      I hope this isn't your line of work.

    8. Re:A duck by Anonymous Coward · · Score: 0


      I don't think you understand what IL is. It's not bytecode, at least not in the Java sense.

      What makes you say that ? It's very much a byte code, and it's very similar to JVM byte code (but with some refinements). See this paper for a good technical overview of the two VMs.

      It is completely language agnostic.

      That is much too strong a statement. No machine, physical or virtual, is completely language agnostic. They will favor some languages over others in terms of efficiency. That is, all languages can be made to run on any machine, but some will run more optimally than others. I saw an interview with the head designer guy of the CLR (I forget his name and title; it was on the MSDN Show) who was saying that his favorite language, Scheme, would not run as fast as it otherwise could because the CLR was not optimized for Scheme. That was just a engineering tradeoff they had to make. The same is true of physical CPUs; they favor some languages over others too.

      But at least MS has multi-language support as a stated goal, unlike Sun who want everyone to write everything in Java.

    9. Re:A duck by Anonymous Coward · · Score: 0

      These arguments that .NET allows "other" languages, is pure BS.

      Of course, to someone who hasn't really studied it at all it would seem like BS. Sorry, a language doesn't have to behave exactly like C# in order to be compilable to .NET, nor does it have to make concessions to do so. Where is my proof? Managed C++. It is as fully ANSI compliant as Visual C++ 7.0 is (which is a lot better lately,) supporting many things C# does not, such as multiple inheritence, and it still compiles to IL for execution on .NET. Get a fucking clue.

    10. Re:A duck by Anonymous Coward · · Score: 0

      Managed classes can't be used with RTTI or pointers to members, and they can't be templates. Pointer arithmetic isn't equivalent to array subscripting, and is only allowed within the members of one managed object. They did an excellent job on Managed C++, but it's probably never going to be 100% ISO/ANSI compliant, and a lot of real-world code needs to be modified before it can be compiled to MSIL.

    11. Re:A duck by SerpentMage · · Score: 1

      Oh come on... I do know about IL and Java ByteCode because I work in both areas.

      Java ByteCode - stack based
      IL - stack based

      Java ByteCode - no registers
      IL - no registers

      They are the same! The difference is that the IL instruction set is larger and that the JavaByte code is limited to 255 instructions (design mistake).

      And yes you can write Managed C++ extensions to generate IL. BUT have you read the C++ spec lately? Because there are some restrictions in the managed C++ that is possible with regular C++. Therefore managed C++ is not C++!

      Now about writing IL, oh come you can do the same with java bytecode. It is no big trick.

      C# and IL are not dependent on each other, true. But C# is the best implementation of a usable IL. Just like Java is best implementation of usable Java Byte Code.

      And yes I did look at IL. In fact I look at IL quite a bit because what the C# compiler generates is quite interesting in compiler theory.... And I have inspected the Rotor and Mono sources.

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    12. Re:A duck by SerpentMage · · Score: 1

      I am not arguing that C# is not an improvement over Java. As said in my original posting I like C# and Java.

      What I am arguing is that C# is one thing that Java is not. People say that C# is open and standards, etc, etc, etc...

      Well guess what it is not. C# base classes are open. But base classes is not what you use to build applications. Base classes are good for demos.

      Is Java open? Absolutely! You can get Java VM's from multiple vendors (and they work). You can get X different libraries that work across the platforms, etc. The choice is there.

      Mono is a nice project and I hope it does well. But it is nowhere near as open as Java. And the rotor sources are demo sources, where MS saves the real stuff for themselves. And that is a mistake.

      Now about Sun dying of. Ok maybe, maybe not. One never knows. Would anybody have thought that IBM is an Open Source company? Not a chance...

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    13. Re:A duck by Zeinfeld · · Score: 1
      Well guess what it is not. C# base classes are open. But base classes is not what you use to build applications. Base classes are good for demos.

      You appear to be unable to distinguish between the language and the platform.

      Windows is not an open platform, it is however a very rich platform with a lot of features. If you want to make use of those features you can use C#. You can also use Java but only by using methods that Sun has deliberately made unpleasant.

      As for base classes being good only for demos, well a lot of people would say the same of the Java clases. If you are on a windows machine or a Mac the java classes look really yucky.

      If you want to write high quality code for a proprietary platform you are going to want the power of access to the native libaries of that platform. I don't want my PC application to look like a piece of trash. I certainly don't want my Mac applications looking like anything other than a Mac.

      I don't consider a language open if it can only be used with one platform. Java is closed because Sun have set themselves up as the absolute arbiters of what will be permitted with the language.

      I consider C# open because I can do whatever I like with it and Microsoft don't have the right to sick lawyers onto me. They gave up that right when they made the ECMA submissions.

      Thanks to Sun I can't use Java to develop Windows applications. As a result I have zero interest in Java now. I am only interested in a language that will allow me to support any platform I choose. I write in C# because at the moment Windows is the largest platform. I can also be confident that over time C# compilers will be available for Mac and Linux. I can be equally confident thanks to Suns lawyers that Java will never be useful as a windows development environment. Sun seems to consider that some sort of victory, phyric would be the term.

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
    14. Re:A duck by bnenning · · Score: 1
      Java is closed because Sun have set themselves up as the absolute arbiters of what will be permitted with the language.


      That's just not true. Look at the Java bindings for Cocoa in Mac OS X. You can write Mac apps entirely in Java that have full access to the native APIs. The difference is that Apple fully supports pure Java development as well. MS could easily have done the same thing, but instead they tried to hijack the entire Java platform and got shot down.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    15. Re:A duck by zero_offset · · Score: 1
      The Bungi makes several good points. The only thing I would add in support of his argument that IL is not just a mutant form of C# is the fact that IL supports quite a few capabilities which are impossible to express in C#. It's hard to find better evidence than that. For example, the CLR (Common Language Runtime) actually permits return-value overloading, which very few languages have ever supported. C# certainly doesn't. Because support for this is so rare, the CLS (S=specification) actually prohibits using this feature.

      Sadly .NET is one of the least-understood and most inappropriately-maligned collection of tools and technologies that I have seen in many years. I mostly blame Microsoft marketing, but I reserve quite a bit of blame for people like the typical /.er who jumps to a conclusion, then defends it with his life.

      And since this discussion is actually mostly about Java, I'll say this -- sure .NET has it's problems, but overall is FAR better thought-out and implemented than any Sun has done with Java so far. Again, as I just noted, it does have problems, and I can show you a shopping list of things I don't like about it -- but that pales in comparison to the three miserable years I spent dealing with Java. (Admittedly, I was mostly doing client-side Java, which is an order of magnitude worse than server-side -- but then, client-side Java is the subject under discussion, isn't it?)

      And since I dared to cross that line and suggest Java isn't all that, I should close with a plea for you to save your Java flames. This wasn't a "religious" commentary -- I've been there and written tens of thousands of lines of Java code, and I won't go back. I was just expressing an opinion about the quality of the implementation, and I already know full well that many /.ers will disagree with me completely -- and a lot of them will do so without actually knowing anything about .NET.

      In any case, I hope my blurb about C# vs. the IL helped clarify that C# is not simply a front-end for IL...

      --

      Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005

  9. Othere JVM Langs by djKing · · Score: 1
    Languages Using JVM covers :
    • Scripting Languages for Java
    • Interactive Languages
    • Non-interactive Languages
    The google search JVM languages turned up a ton of stuff. Jython seems to be the most popular scripting lang for the JVM. -Peace
    --
    Free as in "the Truth shall set you..."
  10. Apple Cocoa by MouseR · · Score: 4, Informative

    Apple's Cocoa framework, based on Objective-C, has all been exposed to Java.

    Both languages share so much of the same concepts that both languages can call in each other, allowing a project to be composed of both Obj-C and java.

    Given Apple's recent extensions to Obj-C, the so-called Objective-C++, you can actually mix C, C++ and Obj-C source code in the same file and interchangeably make cals to and from C++ classes and obj-C classes. Then, calling Java is nearly as trivial.

    These changes are finding their way back into the GCC compiler, which is the standard compiler for the Project builder environment.

    1. Re:Apple Cocoa by Anonymous Coward · · Score: 0
      Given Apple's recent extensions to Obj-C, the so-called Objective-C++, you can actually mix C, C++ and Obj-C source code in the same file and interchangeably make cals to and from C++ classes and obj-C classes. Then, calling Java is nearly as trivial.

      Sounds like a nightmare. Surely it is easier to just choose one language and stick with it!

    2. Re:Apple Cocoa by Anonymous Coward · · Score: 0


      Its a shame that gjc did not start with objective-C instead of trying to hammer java and c++ together.

      Java compiled to "Objective-C" is easy.

      gjc is a dinasour I'm waiting for apples work

  11. Doh by Anonymous Coward · · Score: 0

    Why is it illegal to bundle IE with Windows but they are required to bundle Java with it?

    Its like telling Ford to ship Mercedes parts with their cars.

    Sun is just to stupid to run a business - Java isnt a Standard like C# is.

  12. Java is NOT in danger, sun is. by zaqattack911 · · Score: 3, Interesting

    I think it is important to make this distinction. Don't fall victim to Salon's BS. Granted they have a talented team, and they are good writers. But so help me I am sick an tired of their political twist on everything, and their constantly playing devils advocate on every topic. The more leftist they get.. the more they alienate many of their readers.

    Heh.. ok now that my rant is over...
    What if Sun goes under? This could be a good thing. What if the java platform became GPL ? I think this is an important distinction to make.

    Perhaps the only thing holding back the Java platform is sun holding onto it.

    I have nothing to say about .NET :)

    --noodles

    1. Re:Java is NOT in danger, sun is. by MisterFancypants · · Score: 2, Insightful
      What if the java platform became GPL ? I think this is an important distinction to make.

      If the entirety of Java were placed under the GPL, including all of the Java API libraries, it would KILL Java because it would mean that virtually every Java program distributed would have to be released under the GPL as well. Even if you think this is a good thing, most businesses wouldn't. They'd run screaming from Java.

      This is exactly why the runtime .NET APIs under Mono aren't GPL.. Only the tools themselves are.

    2. Re:Java is NOT in danger, sun is. by gorilla · · Score: 2, Insightful

      No it wouldn't. Does Emacs being GPL'd mean that everything you write in Emacs being GPL'd?

    3. Re:Java is NOT in danger, sun is. by Anonymous Coward · · Score: 1, Informative

      Wait, so if gcc is under the GPL, that means everything I compile with it becomes GPL?

      You have a wrong view of the GPL.
      (Assuming all of Java is GPL) If I modify the core java APIs and write a product with it, I can SELL the product, but I'd have to supply everyone with the source to my modified java apis (not the source for the product).

    4. Re:Java is NOT in danger, sun is. by Hektor_Troy · · Score: 0, Flamebait

      Emacs is an editor (and pretty much everything else), but it is NOT a compiler. Notice that GCC is not GPL, since it being GPL would cause everything to become GPL as well.

      And since java has a ton of standard classes, linking to those classes would require your program to become GPL.

      And you do not want to bind a language to a licence. What would ensure that your gnu/java is compatible with my gnu/java? Nothing. If anything it should be given to a standards body, like for instance the EMCA.

      --
      We do not live in the 21st century. We live in the 20 second century.
    5. Re:Java is NOT in danger, sun is. by jc42 · · Score: 2, Informative

      ... ava were placed under the GPL, ...virtually every Java program distributed would have to be released under the GPL as well.

      Oh, FUD and nonsense. Perl is GPL, and nobody has even hinted that this means that perl programs must be GPL'd. Tcl and TK and GPL, and the same applies. If you bother to read the GPL, you'll find language that explicitly covers things like libraries (which is what the JVM amounts to), and it is made clear that GPL licensing for libraries doesn't extent to things that use the libraries.

      Methinks people are falling for Microsoft's anti-GPL propaganda.

      Actually, this isn't a frivolous worry. I worked on projects at several companies, including Digital, where the lawyers advised strongly against basing any products on Sys/V or any ATT libraries. They thought that ATT's licensing did imply that if you linked to ATT's libc.a, then ATT could claim to own your software. The story seemed to be that the lawyers thought this could be challenged in court, and you'd probably win, but if ATT wanted to press the issue, it could cost you a decade and a billion dollars to get the case decided. Better to go with BSD or OSF or roll your own (or now use linux), and be safe.

      This was widely believed at Digital to be the primary reason they went with other kinds of unix. It was much of the reason that the BSD gang decided to eliminate ATT code from their system. It was also a serious concern among the GNU people, which is why they explicitly address the issue in the GPL.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    6. Re:Java is NOT in danger, sun is. by JordanH · · Score: 4, Informative
      • Notice that GCC is not GPL, since it being GPL would cause everything to become GPL as well.

      Huh? I think you'll find that GCC is most certainly licensed exclusively under the GPL.

      I think you need some education on what the GPL requires. The GNU FAQ explicitly covers the question of whether programs compiled with GCC are GPL'd (they are not).

    7. Re:Java is NOT in danger, sun is. by VAXGeek · · Score: 1

      this is a laughable post and one of the true indicators of the high levels of ignorance on /. these days. i cannot believe i am looking at this post at +3 insightful. this is an obvious lie. to anyone that says /. is even a quarter of the site it used to be i say, ask yourself if such a comment would have been moderated up to +3 two years ago.

      --
      this sig limit is too small to put anything good h
    8. Re:Java is NOT in danger, sun is. by Procrasti · · Score: 1

      Yes, but applications have to *link* to the Java runtime libraries. If they were GPL, the applications would have to be as well. I believe glibc has an exception to the GPL for these reasons, and why the debian free-java-sdk is LGPL'd.

    9. Re:Java is NOT in danger, sun is. by gorilla · · Score: 1

      Emacs is also a lisp interpeter. Any buffer you have open can be executed as lisp code. When you do that, it binds with the GPL'd code which is supplied with Emacs. JordanH has already pointed out that you're wrong about GCC.

    10. Re:Java is NOT in danger, sun is. by tunah · · Score: 1

      No, but i think the argument is that import java.awt.*; would be infectious.

      --
      Free Java games for your phone: Tontie, Sokoban
    11. Re:Java is NOT in danger, sun is. by MisterFancypants · · Score: 1
      (Assuming all of Java is GPL) If I modify the core java APIs and write a product with it, I can SELL the product, but I'd have to supply everyone with the source to my modified java apis (not the source for the product).

      Wrong. That would be true if the core Java API were LGPL, but not GPL. If it is GPL anything that links against it must also be GPL. Period.

    12. Re:Java is NOT in danger, sun is. by MisterFancypants · · Score: 1
      No it wouldn't. Does Emacs being GPL'd mean that everything you write in Emacs being GPL'd?

      First of all emacs isn't even in the same ballpark as what we are talking about. gcc is.

      Now... the gcc is GPL, and if Java were to go 'Free Software', javac and related tools could go GPL with no problem. The real issue is if the Java *APIs* were made GPL. This would force all Java programs that linked to the Java APIs (which is pretty much all of them) to be GPL as well. This is why glibc is NOT GPL but is instead LGPL, and why the Mono .NET APIs aren't GPL (but the tools to compile are). Making the whole of the Java runtime enviornment GPL would be a BAD thing for the future of Java's use by businesses even if you agree with it politically.

    13. Re:Java is NOT in danger, sun is. by MisterFancypants · · Score: 1
      Oh, FUD and nonsense. Perl is GPL, and nobody has even hinted that this means that perl programs must be GPL'd. Tcl and TK and GPL, and the same applies.

      Perl - Artistic License first and foremost. GPL is available as an option for those who want it, but isn't required for exactly the reason I laid out (because if it were GPL only, all Perl scripts would thus have to be GPL).

      TK/TCL - BSD License

      Please go educate yourself before you post again. Thanks.

    14. Re:Java is NOT in danger, sun is. by j3110 · · Score: 1

      JavaLobby recently had a discussion about SUN partnering or being bought. Some wondered why MS didn't just buy SUN. Of course the FTC doesn't smile upon buying your competition, but selling IP is a different story. I think just about everyone believes that IBM is your best bet of getting Java out of SUN's hands. They've said in the past that they'ld love to have it. Even if some evil company wanted to buy Java, IBM would out-bid them.

      BTW, there are plenty of open source VM's out there. What we don't have is a decent class library. SUN has sank a lot of money into that, and honestly they deserve some money for it.

      Like you say though, SUN could be holding Java back now. SUN doesn't have the resources that they did going it to it. They've worked hard and for little return relatively.

      As I said on JavaLobby, they could partner with Oracle and offer one hell of a deal all the way down to the hardware! Companies getting a joint solution from Oracle and SUN with specialists from each company contractable would sound very enticing to just about anyone who can afford it, don't you think?

      --
      Karma Clown
    15. Re:Java is NOT in danger, sun is. by GauteL · · Score: 1

      While I like that you try to confront FUD, this is not entirely correct.

      GPL-based libraries does NOT allow the distribution of closed applications using these libraries, unless a specific exception is included in the license.

      If you want this, you need to use the LGPL-license. It used to be an acronym for "Library General Public License", but since FSF actually encourages the usage of the GPL for libraries as well, they renamed the LGPL license to "Lesser General Public License". There is also an exception in the GPL-license covering libraries that are normally included in the operating system. This can possibly be open for interpretation. Perl-libraries are mostly included in Linux distributions. The absence of Glibc or an equivalent renders the system pretty useless and it can safely be said to be system libraries.

      Usage of the libraries and the compiler are also two seperate issues. The compiler may very well be GPL and still allow for closed applications, but the libraries do not. Apple uses the GPLed compiler GCC for compiling their closed product MacOS X.

      To summarize, if the entire Java SDK was made GPL, new products based on this would probably have to be GPL if they used both the compiler and the libraries (which most apps do). The solution could be to make the compiler (and possibly the VM itself) GPL and the class-library LGPL. Or you could just LGPL the entire thing and not have to worry about this.

  13. Jython by dbarry · · Score: 5, Informative

    Anyone know of any projects to compile JVM bytecode from other languages?

    Jython
    # Dynamic compilation to Java bytecodes - leads to highest possible performance without sacrificing interactivity.
    # Ability to extend existing Java classes in Jython - allows effective use of abstract classes.
    # Optional static compilation - allows creation of applets, servlets, beans, ...
    # Bean Properties - make use of Java packages much easier.
    # Python Language - combines remarkable power with very clear syntax. It also supports a full object-oriented programming model which makes it a natural fit for Java's OO design.

  14. This is too bad by Achmed+Swaribabu · · Score: 1
    Programming languages are like tools. You use the proper tool for the proper job. Trying to make a one size fits all language seem to me like a great marketing strategy but for the real programmers we know better.

    Java work well for many things but I don't fall for marketing material when it comes to putting the food on my table, I use the best scientific information I have.

    --

    All the best,
    --Achmed

    Swaribabu Consulting Inc. -- We code so you don't have to

  15. I Think... by FireChipmunk · · Score: 4, Funny

    I Think Sun are really a huge problem
    I Think Garbage Collections are too much on my mind
    I Think dumps have got a lot to do with why the world sucks
    But what can you do?

    Like a red rain, beating down on me
    Like a Linus line, which won't let go of my brain
    Like C#'s ass, it is in my head
    Blame it on java
    Blame it on java
    Blame it on java

    I Think slows are gonna drive us all crazy
    And write once, run anywheres make me feel like a child
    I Think crapyness will eventually be the downfall of civilization
    But what can you do? I said what can you do?

    Like a red rain, beating down on me
    Like a Linus line, which won't let go of my brain
    Like C#'s ass, it is in my head
    Blame it on java
    Blame it on java
    Blame it on java

    Like a red rain, beating down on me
    Like C#'s smile, cruel and cold
    Like Linus's ass, it is in my head
    Blame it on java
    Blame it on java
    Blame it on java

    1. Re:I Think... by Anonymous Coward · · Score: 0

      Heh heh, too true.

    2. Re:I Think... by Anonymous Coward · · Score: 0

      "Will to Live"

      I feel miserable
      Fud compaigns make me ill
      I feel miserable
      Newspeak lexicons tear at my foundations
      I feel miserable
      Platform games are dragging me down to the depths of misery
      I want to die

      Is it because of microsoft shills that I feel this way?
      With the orange rays of misery pounding on my brain?
      Or am I lost in tale of Gosling, adrift far from home
      I don't think so, I don't think so.

      Bill Broke My Will to Live
      Bill Broke My Will to Live
      Bill Broke My Will to Live
      I was getting better but then
      Bill Broke My Will to Live

      I feel miserable
      Opponents of diversity rot the flesh from my bones
      I feel miserable
      Document formats defeat my purpose
      I feel miserable
      APIs are doing their best to impale my soul
      I want to die

      Is it because of microsoft shills that I feel this way?
      With the orange rays of misery pounding on my brain?
      Am I lost in tale of Gosling, adrift far from home
      I don't think so, I don't think so.

      Bill Broke My Will to Live
      Bill Broke My Will to Live
      Oh God, Bill Broke My Will to Live
      I was getting better but then
      Bill Broke My Will to Live

  16. The delay was actually A Good Thing by swordboy · · Score: 1

    I think that processors were too slow for widespread adoption of some killer apps. MS killing it for a few years was a great thing for Java. Now, I can program my multi-platform apps to my heart's content and not have to worry about run-time load speeds (well... for dial-up...).

    --

    Life is the leading cause of death in America.
  17. Re:The Future of Java? Even Brighter!! by NineNine · · Score: 2, Interesting

    Sure Swing is a little sluggish, but when everyone is running a p4 2GHz, it really doesn't matter....


    At the rate of PC sales, I think it's gong to be quite some time before that happens.

  18. Interesting future indeed.. by Gortbusters.org · · Score: 4, Insightful

    when you think about it, MS is really trying to kill java... and in more ways than just the JVM stuff. If you ever visit the MSDN, you might see many items for converting your java code to C#, reasons to use C#.

    Take away the business side, what are the advantages of using java versus C#? Looking at Mono it seems to marry both technologies -- correct me if I'm wrong, but they want to compile both.

    --
    --------
    Free your mind.
    1. Re:Interesting future indeed.. by Simon+Brooke · · Score: 5, Insightful
      Take away the business side, what are the advantages of using java versus C#? Looking at Mono it seems to marry both technologies -- correct me if I'm wrong, but they want to compile both.

      I'm prepeared to bet a great deal (well, my career, in fact) that Mono will never reliably run .NET applications produced by Microsoft (or indeed by other people using Microsoft tools). If you write for the JVM, you will have a reliable ful-featured runtime both on Sun platforms and on platforms which compete with Sun platforms. We know this from Sun's historic behaviour: Java runs extremely well both on Linux and on IBM RS/6000 boxes. If you write for .NET, you will never have a reliable, full featured run time on any platform which Microsoft sees as a serious competitor. We know this, too, from Microsoft's historical behaviour. The leopard has not changed its spots.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
    2. Re:Interesting future indeed.. by Sajarak · · Score: 2, Interesting

      I'm asking myself the same question... There are several reasons why business would still have a strong interest in Java (integration with Sun and IBM products, a mature, stable language, lots of Java programmers, and so on.)

      But for more small-scale projects, writing software to run in the .NET framework seems to make a fair bit of sense, especially if you want a GUI and your target audience is only Windows users. There are still a lot of things that you can't do in Mono or DotGNU, though, most notably Windows Forms, and it remains to be seen how reliable their implementations will be.

    3. Re:Interesting future indeed.. by gorilla · · Score: 3, Insightful

      I'd be prepared to bet that Mono running .NET will never reach the reliability & security given by Java on Unix/Linux at that same point in time. Microsoft has always had a model of putting software onto the market, then fixing it 5 or 6 revisions down the road. This was acceptable when products were isolated, however in a system where related interactions occur, this means that you never really get a truely stable environment.

    4. Re:Interesting future indeed.. by gorilla · · Score: 1

      I've just realized I didn't write what I meant to write here. I meant that .NET running on Microsoft, not Mono.

    5. Re:Interesting future indeed.. by rrobles · · Score: 2, Interesting

      Ok, let's explore this 'What If' scenario.

      What if Microsoft decides to implement NET for another platform different than Windows, offering some sense of full .NET compatibility with your already Windows-working "code investment", why would you like to use Mono instead of the "official" MS implementation?...similar to what happened to Sun's Linux JVM implementation, why you would like to use an open source JVM (like Black Down) if you can have the creator's implementation that gives you a security feeling that at least you're not going to have some compatibility issues...I'm assuming a business critical application, where your income depends, not a one-person pet/toy project...I believe this is one of the biggest challenges for open source .NET implementations...What if IBM decides to enter the .NET market and provide a high performance .NET runtime as they are doing it currently with Java, What about others?...I like the Mono effort, its community, but I haven't found the answer to this challenge myself...

    6. Re:Interesting future indeed.. by Simon+Brooke · · Score: 1
      What if Microsoft decides to implement NET for another platform different than Windows, offering some sense of full.NET compatibility with your already Windows-working "code investment", why would you like to use Mono instead of the "official" MS implementation?...similar to what happened to Sun's Linux JVM implementation, why you would like to use an open source JVM (like Black Down) if you can have the creator's implementation that gives you a security feeling that at least you're not going to have some compatibility issues...I'm assuming a business critical application, where your income depends, not a one-person pet/toy project...I believe this is one of the biggest challenges for open source.NET implementations...What if IBM decides to enter the.NET market and provide a high performance.NET runtime as they are doing it currently with Java, What about others?...I like the Mono effort, its community, but I haven't found the answer to this challenge myself...

      Yes, what if? In my opinion it doesn't really matter whether it's a Mono or a Microsoft .NET implementation on [insert non-microsoft platform of your choice here]. It will be incompatible in subtle ways which can be passed off as 'unintended' or 'bugs' or 'well, we don't really recommend that platform'. Microsoft will work very hard to ensure that Microsoft .NET on a Microsoft platform works just a little differently in small subtle ways than anyone's .NET on any non-Microsoft platform, and that Microsoft's applications and tools exploit those small, subtle differences to make other platforms seem unreliable. It's the nature of the beast; it's how they live, how they've always lived, how they play the game. How they win.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
  19. Re:I'm so pissed off by Malc · · Score: 1, Funny

    Maybe they were giving us time to read the links? That would be a shocker for most /.'ers though, reading the story before posting!.

  20. MS Appealing the decision by Masem · · Score: 1

    Not worth the effort for a whole new story, but MS is appealling the judge's decision in the MS vs Sun case, reported by Cnet. MS claims that the injuction (Remember, the case has yet to be settled; the judge, though, deemed that Sun may be victorious in the case, and thus ordered the inclusion of Java as part of the injunction for Sun) would "inflict serious harm" in the various Windows products it would need to include Java in.

    --
    "Pinky, you've left the lens cap of your mind on again." - P&TB
    "I can see my house from here!" - ST:
  21. Mumps to JVM by goodday · · Score: 1

    Anyone making a Mumps conversion system could do good business.

  22. The Myth of the Demand for Multiple Languages by smack.addict · · Score: 1
    In reality, most OO languages or languages that can support an OO paradigm can be compiled into JVM byte code. Several projects support that notion. I know, for example, that Python can be compiled to JVM byte code.

    You do not, however, see a lot of demand for this. The reason is simple. Organizations do not want the complexity of managing dozens of programming languages. Ideally, they would like to hire only Java or only C# developers and have those developers be able to manage all of their code.

    In the real world, of course, companies have an existing investment in multiple languages. They have old COBOL, VB, C++, C, etc. systems to maintain. This fact is used by the C# crowd as an argument for the need for a multi-language VM (which Java is in spite of their arguments to the contrary). In reality, however, it would be foolish to take a working, monolithic COBOL system and stick it in a .NET runtime environment. That's a lot of work for little benefit.

    It is a much better design practice to build a facade around that system and enable interaction through that facade. When people do this, they do not end up "throwing out their investment" as Miguel suggests. They instead empower themselves to retain the investment as long as it makes sense and replace it it makes sense.

    In other words, I am saying that, all else being equal, even for .NET people support for multiple languages will prove to be a non-feature. If it were, people would be using that feature of the Java platform. I know that .NET advocates make the claim that .NET bytecode better supports multiple languages. It is true that it is marginally better. Nevertheless, it still carries a bias towards C#. In other words, languages a lot like C# will be supported easily and languages much unlike C# will be harder.

    1. Re:The Myth of the Demand for Multiple Languages by Gortbusters.org · · Score: 1

      It's true... managers aren't interested in all the fancy technical feets that can be accomplished. The bottom line is they want to make money, and certain buzz words will move them towards different technologies. Java, .NET, both buzzwords. My guess is that a lack of knowledge in both will yield a 'who cares, just do the work' attitude. If they have a background in one, they will probably be slanted in that direction.

      --
      --------
      Free your mind.
    2. Re:The Myth of the Demand for Multiple Languages by jgerman · · Score: 2, Insightful

      What exactly is there in Java that allows one to build "complex applications"? I hear that from Java and OO fans all the time


      They also have Perl and shell scripts for scripting, Tk for tool interfaces, Expect for testing and automated interactions... and on down the line. Hiring someone to primarily code in C++, or Java or whatever is acceptable if the product is in a particular language, but if the potential employee sits in front of me with only that language to his credit he's not getting the job. The ability to use the right tool for the job is the most important aspect of being able to code.

      --
      I'm the big fish in the big pond bitch.
  23. Java Stays Alive Despite MS by Spencerian · · Score: 5, Interesting

    It's never been too late for Java, any more than its too late for other less popular but powerful languages. Just because Perl is around doesn't make TK, or AppleScript, or Python any less useful, for instance.

    I've found that Java is great for complex applications that need cross-platform ability when programmers can't spend too much time in making that compatibility happen. Mac OS X is among the strongest Java clients around, and it shows every time I download a raw JAR and just use it. YMMV, but Java has a lot of warmth left in its cup, and, if other platforms aside from MS continue to support, we'll all get free refills.

    (Sorry for the many metaphors. Haven't had my cup of coffee this morning--ack, I did it again...)

    --
    Vos teneo officium eram periculosus ut vos recipero is.
  24. Java should be alive. by Captain+Rotundo · · Score: 1

    I personally think (and that probably isn't worth much since I've written some Java, and no C#) that java is the key to keeping .Net in check. I haven't seen any compelling reasons why .net is supperior to java, even the supposed multi-language feature has been contested. I also see no reason to believe that any non-MS version of .net will be able to keep up, or that MS will bother to let .net flurish on any non-MS OS. Since I don't run a microsoft OS this bothers me. I don't want to see all this developement go towards a platform I will never be able to fully take advantage of.

    Java works now. What we need is an open standard for java, with robust open implementations. Right now I think the only stumbling block for java is the lack of non-proprietary software to run and/or develope it. While some of the free implementations are very nice they still aren't able to keep up. Sun should really be pushing to make thier java implementation 'free' enough to become a major component of free systems, otherwise in a few years they'll be protecting and holding on to java while everyone else moved on to microsofts product.

    1. Re:Java should be alive. by Anonymous Coward · · Score: 0
      I haven't seen any compelling reasons why .net is supperior to java,
      .NET doesn't have Swing.
    2. Re:Java should be alive. by Captain+Rotundo · · Score: 1

      I like swing.

    3. Re:Java should be alive. by Anonymous Coward · · Score: 0

      Good afternoon, Mr McNealy.

  25. Java applications I've SEEN are unimpressive... by dpbsmith · · Score: 1, Informative

    We have an OEM who delivers certain applications to us that are developed in Java. These are ordinary-looking, double-clickable Windows and Mac applications. What can I say? There's nothing TERRIBLY wrong with them, but they're slow to start up, clunky-feeling, sometimes don't refresh the screen properly, have various minor UI inconsistencies with the underlying platform, and so on. They simply do not look or feel like first-class native applications.

    Yes, yes, yes, I know that theoretically these problems could all be solved, and that no doubt it's because they're not using version the latest version X.0165 of Java GUI technology flavor Y... and it's all Microsoft's fault... and so forth... ...but, still, in practice the actual cross-platform Java applications I've seen are very unimpressive and are not good advertisements for Java as a cross-platform GUI development methodology.

    And I still experience a feeling of dread whenever I go to a web page and see "Applet loading..."

    1. Re:Java applications I've SEEN are unimpressive... by rzymek · · Score: 1

      Take a look at IntelliJ IDEA. It's the best (and moste impressive) IDE I've ever programmed in.

    2. Re:Java applications I've SEEN are unimpressive... by Anonymous Coward · · Score: 0

      It is the best IDE ever, yes. But it's slow to start up, clunky-feeling, sometimes doesn't refresh the screen properly, has many major UI inconsistencies with the underlying platform, and so on. It simply does not look or feel like a first-class native application.

      Also its memory management sucks.

    3. Re:Java applications I've SEEN are unimpressive... by Anonymous Coward · · Score: 0

      take a look at elipse.org and regret your stupid comment

    4. Re:Java applications I've SEEN are unimpressive... by MillionthMonkey · · Score: 1

      I've been using early access versions of IDEA for several months and my impression is that they've been spending their time packing new features into it at an alarming rate. At the same time the footprint has exploded since the 2.6 version. The 3.0 version of IDEA is a wonderful program but it will bring your computer to its knees, so don't buy it if you're going to use it on an old computer. They promised that following 3.0 they would spend time making optimizations, rather than introducing new features. I hope so.

      IDEA uses its own custom Swing UI layer, so you wouldn't expect it to look native at all. There's a preference somewhere to use Sun's Windows L&F (although Sun didn't pull off the native look either). I actually like its appearance. Although I don't like the screen refresh problems it has during garbage collects! Someone at IntelliJ needs to take a break from feature creep long enough to run a profiler on the damn thing. Still, it saves so much time in other ways (with its refactoring tools, etc.) that these are relatively minor annoyances.

    5. Re:Java applications I've SEEN are unimpressive... by Anonymous Coward · · Score: 0

      Java GUI applications aren't properly representitive of Java as a whole. You wouldn't really notice the speed difference if the Windows GUI stuff wasn't inside its kernel. :P

    6. Re:Java applications I've SEEN are unimpressive... by JediTrainer · · Score: 1

      I agree with you that client-side Java is still immature (especially Applets, ick). On the other hand, Java's definitely a great tool for the server side, or embedded apps.

      Case in point? My bank uses Java on their servers. Online banking. Payments, transfers, whatever I want. It's responsive and reliable.

      I might be biased too. In my current job I am programming an enterprise web application in Java. It's quite stable, using Linux, Apache and Tomcat. We've not had any problems (aside from hardware issues occasionally) in over two years since switching to this setup.

      --

      You can accomplish anything you set your mind to. The impossible just takes a little longer.
    7. Re:Java applications I've SEEN are unimpressive... by tcopeland · · Score: 1

      FWIW.... ditto.

      IDEA is slow to start up, but its refactoring tools are beautiful. Just the "optimize imports" tool alone is worth it. I find myself renaming variables and such much more often now that I know I can do it easily and safely....

      Tom

  26. Java developer by Anonymous Coward · · Score: 1, Interesting

    Our company is just about to start a big customer project and because the target system is Windows and there certain needs we were thinking to go for C#, but due to recent ruling and our own test we decided to pick Java. That makes me SO happy.
    I know there are quite many companies how are just starting to accept Java as THE programming language.

    1. Re:Java developer by Anonymous Coward · · Score: 0

      God you are stupid. Due to the recent ruling you chose Java? You do know that its not a final ruling, that there is room for appeals and a trial still to come. I would certainly not use the ruling until its final as part of a decision maker. If you become dependent on that, you will fail.

  27. perspective from a CS student by ShatteredDream · · Score: 3, Interesting

    My first two programming classes were in Java. I really think we would have had more fun learning the same concepts in Python. The thing that I've come to love the most about Python is that it doesn't force you to build an entire class just to test a feature. It's a great language to encourage CS students do their own experimenting with.

    I'm personally ambivalent to Java. I like it for some things, but the only real reason I want to learn it is because so many use it. I just recently discovered wxPython and think it's probably easier for me than Swing or AWT.

    The best thing that could come from Java for development as a whole IMO is Javadoc. If that tool were extended to support C++, C#, VB.NET, Python, PERL, etc it would make everyone's lives easier. Seriously, has anyone seen better documentation than Sun's Javadocs from something so big and complex as Java's libraries?

    I'm really excited about Mono because I really like VB.NET and C#. I think the ability to use any language you want with the same libraries is a very important strength that .NET has over Java. I know there are other languages that __can__ targe the JVM, but Sun doesn't exactly seem to be pushing that. I'll never understand why though. Java could be made into their platform's equivalent of C# and they could develop their own clone of VB for Java. Hmmmm VB-J? It'd be great if they'd build VB and ObjectPascal compilers that target the JVM.

    1. Re:perspective from a CS student by Anonymous Coward · · Score: 0
      The best thing that could come from Java for development as a whole IMO is Javadoc. If that tool were extended to support C++, C#, VB.NET, Python, PERL, etc it would make everyone's lives easier. Seriously, has anyone seen better documentation than Sun's Javadocs from something so big and complex as Java's libraries?
      .NET includes documentation tools that are better than Javadoc. They're XML based.
    2. Re:perspective from a CS student by Anonymous Coward · · Score: 0
      The thing that I've come to love the most about Python is that it doesn't force you to build an entire class just to test a feature.
      Python doesn't enforce OOP either. Java does, and that's one reason it's possible to do such stable programs in Java.
    3. Re:perspective from a CS student by scrytch · · Score: 1

      > My first two programming classes were in Java. I really think we would have had more fun learning the same concepts in Python

      Most of the concepts anyway, and CS should certainly be taught in the highest level language possible, but software engineering really does have to train you on the disgusting realities of compilers, strong typing, and all the other crippling baggage of industry languages. It's a shame there's still such a disconnect between theory and application ... in fact the gap between CS theory and practice is probably stronger than in other engineering professions, due to the cost of retraining folks when the software is such a commodity and no delay can be afforded.

      I'm not talking about high-minded ivory tower things like pure functional programming, I'm talking about stuff that should be really basic parts of most languages by now, like type inference.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    4. Re:perspective from a CS student by Anonymous Coward · · Score: 0

      Most of the concepts anyway, and CS should certainly be taught in the highest level language possible

      No. CS isn't math, it's the study of the theory and practice of computing using machinery, not mathematical expressions of algorithms. What's the difference? Mathematics isn't concerned with the ugly realities of registers, caches, memory and processor limitations, etc. etc. I think CS course should start with assembly language to build a basic understanding of how machines compute.

      Then, as the instruction moves beyond simple control structures and bit manipulations to complex data structures and algorithms, the languages used should become more abstract and higher level.

      Programmers who don't understand machines, are ill-prepared because abstractions always leak. When those abstractions leak, they have no recourse to solve the problem. Furthermore, as programmers move down the software stack, the abstractions leak more and more to the point of uselessness. That's why nobody writes OS kernels in scheme. If a high level language is all you know, and you live in a happy world of abstractions, you will never be a kernel programmer. That may be OK by you, but your CS program has failed you.

      in fact the gap between CS theory and practice is probably stronger than in other engineering professions

      That's because programming is =not= an engineering profession. If you are not building physical artifacts, you are not engineering. That's an important distinction. Programming is somewhere between math and engineering and treating it as one or the other is bound to have serious side effects.

      Oh, and IAAKP (I am a kernel programmer).

  28. Universities by SnAzBaZ · · Score: 5, Interesting

    I think Java's future can only get better, not because of the recent ruling against Microsoft - which to be honest I don't think is all that important. Rather, the fact that all the universities (at least over here in the UK) seem to be adopting Java as their main language for Computer Science and related courses. It won't be long before a whole generation of enthusiastic Java coders emerges.

    Another issue is that as linux becomes more widely used, code that can easily be run on multiple os's becomes far more valuable. And developers may turn to Java for this reason, especially with all the cheap, fast, hardware we're all running nowadays where speed and efficiency arn't as important as they used to be in many situations.

    1. Re:Universities by FrozedSolid · · Score: 2, Informative

      I live in the US, and in my high school, I'm currently taking a C++ Computer Science course. It counts as college credit, and I'd go on to say how it's really a joke of a course, about unimportant design principles, but that's besides the point...

      Next Year, they're switching the course to java, Apparently all of the AP Computer Science courses are required to do it next year by order of the college board.

      I couldn't tell you if it means anything about future java dominance, but it's probably an interesting tidbit nonetheless

      --
      When all freedom is outlawed only the outlaws have freedom
    2. Re:Universities by Anonymous Coward · · Score: 0

      Hmm.

      I think to get a -real- CSc degree, students should have to know at least one compiled language and one interpreted language.

      Compiled because you ought to know the difference between a stack and a heap, and how to work with destructors.

      Interpreted because there are nifty things you can do that you can't in compiled.

      A graduate who knows Java but not C++ would be useless for employment in several big industries!

    3. Re:Universities by Anonymous Coward · · Score: 0
      When I did AP Computer Science, back in 1990, the test was in Pascal. Therefore Pascal must have had a great future ahead of it, right?


      I don't think educational use hurts Java, but I think history shows that it does not really help.

    4. Re:Universities by Raskolnk · · Score: 1

      ...and how to work with destructors.

      Yes, using destructors is an essential part of all compiled languages. I don't know what I'd do if I didn't learn how to add destructor functions to my structs in C.

      --
      Don't blame me, I get all my opinions from my Ouija board.
  29. lots by Kubla+Khan · · Score: 0

    Tcl
    Lisp
    Scheme
    Basic
    Prolog
    Smalltalk
    cobol
    ada
    c

    For Starters

    see here

    On top of which you have gjc which allows native compilation on linux (they have eclipse running on it now).

    Personally i think mono is a needless duplication of effort whose only real benificiary is microsoft. If the mono effort was aimed at the existing open source jvm's it would be a real kick in the teeth for microsoft.

    --
    "In Xanadu did Kubla Khan a stately pleasure dome decree"
  30. Interpreted languages and .NET by Anonymous Coward · · Score: 0

    Before someone starts talking about .net, it should be noted it is not suited for interpreted languages (see the attempt to port python to it), and several "compiled" languages can't adapt to it. Java, OTOH, makes things clear for languages trying to compile to it.

  31. couple of comments on that article by znaps · · Score: 2, Informative

    They failed to mention the biggest advantage to using Java - a company can develop a front to back end solution completely using Java. Admittedly, this should be achievable using C# now, but I think this is what companies are interested in rather than any cross platform abilities of the code.

    Also, it always irritates me when they ask only the most biased people imaginable whether such-and-such a technology is going to survive. It's like asking the Pope and the Ayatollah which is the best religion...and leaves us no clearer as to what is really going to happen...

  32. Don't see how it will make a difference by stratjakt · · Score: 1

    Just because it didn't ship with windows doesn't mean it didnt exist, or wasnt easily installable if one wanted or needed it.

    I mean shockwave and adobe acrobat reader dont ship with windows but they wind up on virtually everyones machine. (I know this is apples and oranges, but for the sake of my argument it's good enough that it's all fruit).

    If there were Java applications that I wanted, I'd install the JVM. Heck, bundle the JVM with the app's installer or in the case of an applet, stick a little 'click here to install java' link in.

    So whats the difference? Has the java community been sitting on their hands doing nothing, waiting until the JVM ships with windows? Is there a shipload of software waiting in the wings just waiting for the updated XP disks to ship?

    Or does Suns implementation just stink on ice and we needed to mandate that MSFT come in and 'get it right'? (This is a deliberately absurd rhetorical question, not flamebate)

    I really see no signifigance to this at all. How java gets onto the machines is irrelevant, it's how much developer mindshare the language recieves that will decide it's level of success.

    --
    I don't need no instructions to know how to rock!!!!
    1. Re:Don't see how it will make a difference by Anonymous Coward · · Score: 0

      The issue isn't that java was not on the machines. The issue is that it *was* on the machines in a deliberately broken form. So java applications either wouldn't run, or would run like crap. And your average user would be left with the impression that they had java, but the programs available for it rubbish.

      Plus the shockwave/flash example isn't a good comparison - the JRE download is several times larger, and ok broadband is quite common now, but its not ubiquitous and it certainly wasn't a few years ago when most of the damage to the reputation of client-side java was done.

      Add to that the varying ways of signing and embedding an applet depending on browser/platform version and you've immediately got to write three different versions of your applet just for windows...

      And for those who think Swing is sluggish - you've just not used a well-written swing application. Check out intelliJ IDEA. The best IDE I've ever used, bar none.

  33. perljvm by tommck · · Score: 2, Interesting
    Brad Kuhn's project, perljvm has been around for a long time. (Yes, that Brad Kuhn)


    And, coincidentally, I went to college with him, so I have to give him a plug :-)

    T

    --
    ---- It puts the lotion on its skin or else it gets the hose again. It does this whenever it's told.
  34. This appears to be recycled Sun press releases... by Anonymous Coward · · Score: 0

    ...with no mention of the technical merits of .NET versus Java.

    Why did anyone even *post* a link to Salon on a technical subject, for heaven's sake? Desperate for a java feelgood session?

    Posted anonymously so I can use my karma as a FORCE FOR GOOD!

  35. Who knows. The important thing.... by Anonymous Coward · · Score: 0

    ...is to blame their shortcomings on Microsoft. It HAS to be their fault.

  36. Sun has $5 billion and minor debt by Anonymous Coward · · Score: 1, Informative

    Sun has $5 billion cash in the bank and has very low debt. How exactly is it "going to go under"? their stock is at pre-internet hype levels, but then again, so is everyone else's.

    1. Re:Sun has $5 billion and minor debt by Anonymous Coward · · Score: 0

      Sun doesn't have to go under. They can, and probably will, follow the SGI route of sinking into obscurity with a huge warchest in tow.

      Java's future is questionable. Notice how McNealy never even mentions Java in his Nasdaq pitches. It's all about Sun as a server company. They don't make dollar one off of Java.

      They make a lot more money off of a close relationship with Oracle. The problem is that Ellison is now 'embracing Linux', which is a huge red flag for Sun. They should go back to Oracle on bended knee and plead for Larry to come back to the Sun side.

  37. Two languages that use the JVM bytecode by cwills · · Score: 3, Insightful

    Well, not quite two (1 1/2 maybe :)

    NetRexx "compiles" down to java bytecode, but it does it by compiling into java first. NetRexx allows you to use any Java class.

    NetRexx was developed by the IBMer who developed the Rexx programming language. It has a fairly easy syntax, provides some very powerful/easy to use string parsing facilities.

    You can pick up a copy of NetRexx (available for download from http://www2.hursley.ibm.com/netrexx/)

    The other language is Jcon which does compile directly to the javabyte code. Jcon is a "Java" implementation of the Icon Programming Language.

    To quote the website: Icon is a high-level, general-purpose programming language with a large repertoire of features for processing data structures and character strings. Icon is an imperative, procedural language with a syntax reminiscent of C and Pascal, but with semantics at a much higher level.

    If you poke around deep enough in the history of Perl, you will find references back to Icon.

    Details of Jcon (and download) can be found at the Icon home page at http://www.cs.arizona.edu/icon then follow the link to Java-based "Jcon".

  38. dotGNU! by Lysol · · Score: 1

    It has facilities in its IL compiler to spit out jvm bytecode.

    Quote from this link: Oct 02-10-2002: Java Bytecode Output for Portable.Net

    Sylvain Pasche has fixed up the Portable.Net assembler to generate the correct java bytecode. Now the C# compiler sports a nice JVM output backend. The results become really interesting when the whole pnetlib can be compiled into JVM code. Read full details here.


    And, from what I know of these guys, they will go to all lengths not just to get the M$ stuff working correctly, but *all* supported languages. They're really a smart bunch.

  39. Well, good. by siphoncolder · · Score: 1
    Java is a great language, granted. Very well structured, expandable, lots of good features & functions that even MS had to copy it.

    However, the problem with Java is:

    Bad business execution. Garbage output performance. Attempting to be too many things to everyone and only managing to do one thing well.

    For server-side execution where objects are pooled & recalled for further use in memory, it's great. But no-one, and I mean *NO-ONE*, will ever again attempt to use Java as a serious tool for a serious GUI application.

    Java wasn't doomed by having a bad language model. It was doomed by everything else.

    --
    i'm amazed that i survived - an airbag saved my life.
    1. Re:Well, good. by Anonymous Coward · · Score: 0

      Uhm, TogetherJ, Together Control Center come to mind.

      There are *DOUBTLESS* others, if you will open your eyes.

    2. Re:Well, good. by Anonymous Coward · · Score: 0

      JEdit is a really nice pure-Java editor. But what blew me away is how fast and responsive it is. Check it out. You can easily turn into emacs!

    3. Re:Well, good. by Anonymous Coward · · Score: 0

      check out eclipse.org, their SWT framework is a replacement for AWT/Swing, it allows you to have control native widgets. Check out their IDE as a sample, you WILL not belive that it is a Java app. Some of the coolest stuff I have seen for java in a while..

      JL

    4. Re:Well, good. by Jord · · Score: 1
      But no- one, and I mean *NO-ONE*, will ever again attempt to use Java as a serious tool for a serious GUI application

      you might want to check on google and discover how much of the world considers you wrong in this respect.

      Java can create "serious GUI applications", the problem lies in the fact that most java developers are incapable of writing "serious GUI applications".

  40. Re:The Future of Java? Even Brighter!! by mooZENDog · · Score: 5, Informative

    I agree completely with your comments on the future of Java as a server side solution. JSP, servlets, and J2EE are all fantastic.

    Sure Swing is a little sluggish, but when everyone is running a p4 2GHz, it really doesn't matter....

    But it does matter, if other programming languages still run relatively faster than Java. I agree that it's not as clunky as it was a few years ago though... *shudder*

    Two things I feel you've left out are:
    1 - The embedded systems market. When I was at Uni this was being touted as the next best thing. I don't have any real statistics for you, but I'm sure Java is doing well in this field.
    2 - The mobile phone market. Pretty similar to my first point, the KVM (Kilobyte VM - a cut-down version of JVM) and related APIs in J2ME are a big player in the mobile phone business. The company I work for is developing mobile phone games, and Java has got the support of the handset manufacturers, which will give it superiority over other technologies that havn't had as good an uptake.

    --

    ---
    "An eye for an eye leaves the whole world blind" - Gandhi
  41. outlook for java not so good by g4dget · · Score: 1
    Sun promised to deliver a small cross-platform platform for delivering applications over the web. They promised to have the system standardized through a standards body. They promised to improve numerical performance and compile-time type safety.

    What Sun has given us instead is a huge server-side environment. Sun dropped out of standardization efforts twice (you may argue whether their reasons were good, but the fact is they broke their promises). The GUI toolkit and graphics systems (Swing and Java2D) are proprietary to Sun and have no third party or open source equivalents. Sun has implemented almost none of the recommendations of the JavaGrande forum. And Sun's implementation of genericity is not type-safe. And on top of all that, Sun holds patents on some core Java technologies (like the byte-code type checking).

    The biggest promise of Java, easy cross-platform GUI development, has been the biggest disappointment as far as I'm concerned. Swing is a pretty neat GUI toolkit on Windows, but on Mac and Linux, it's flaky and unpredictable in my experience. And Sun's lowest-common denominator cross-platform philosophy is seriously flawed in my opinion, putting everybody into a straightjacket. wxWindows's cross-platform approach is much better: wxWindows gives you the lowest common denominator, and then it gives you convenient access to platform-specific features when you want it--that's essential for writing high-quality apps.

    As far as I'm concerned, Java has stagnated and become bloated over the last few years. And I don't think Java is a good platform for open source development (since important parts of the platform are not available in open source form).

    I think Mono is the best option for open source systems. Microsoft has learned from Sun's mistakes and done a (slightly) better job with language design. And Microsoft isn't afraid to fix the runtime to make things like genericity work right.

    And, sad as it is, I think the legal and patent situation is better for C#/CLR than for Java/JVM: yes, like Sun, Microsoft has patents, and unlike Sun, they are even threatening to assert them, but unlike Sun's, those patents seem peripheral and easily worked around.

    What's probably going to happen is that IBM takes away the rudder from Sun and pushes a Java platform built entirely around open, non-Sun standards. And projects like Mono will probably offer full Java support pretty soon. So, in some sense, Java is going to survive, but Sun and the Java2 platform will disappear. And, as far as I'm concerned, it won't be missed either.

    1. Re:outlook for java not so good by Anonymous Coward · · Score: 0

      The GUI toolkit and graphics systems (Swing and Java2D) are proprietary to Sun and have no third party or open source equivalents

      Wrong, check out SWT at http://www.eclipse.org ... its quite nice, lets you use native win32 widgets in java..

    2. Re:outlook for java not so good by crazyphilman · · Score: 1

      G4dget said: " As far as I'm concerned, Java has stagnated and become bloated over the last few years. And I don't think Java is a good platform for open source development (since important parts of the platform are not available in open source form)."

      I agree with your entire post, which I think stated very eloquently what's going on with Java, but the above line resonated with me in particular. I run pretty old equipment, and I don't tend to spend very much bread on PCs (especially laptops, one accidental drop and they're paperweights) so the bloat issue is pretty important to me.

      One of the nicer things about open source software is that you can generally get it to work pretty well on older equipment. Red Hat Linux 7.3 with KDE works fine on a Pentium 166MMX with 96MB ram. Applications load pretty quickly, everything seems smooth... This is one of the strengths of Linux, for me at least. So it pains me that Java is such a memory hog (the recommended environment for Forte, for example, which was written in Java, is 512MB Ram, minimum -- my little laptops have maybe 96MB). So on my little laptops, big Linux apps run slowly, and take forever to load (if they load correctly at all). In my view, an elegant language would let you write for older machines... Java doesn't, really.

      Maybe Mono will do a better job there. If they're going to use it to develop for Gnome and etc, then they're going to have to figure out how to get it to be small-machine friendly like the rest of Linux. I'm pretty sure they're already working on that... Open Source guys are pretty good about that sort of thing.

      As far as IBM goes, their implementation might be a little tighter than Sun's, who knows? It'll be interesting to find out.

      --
      Farewell! It's been a fine buncha years!
    3. Re:outlook for java not so good by g4dget · · Score: 1
      GNU gcj, the open source Java compiler, actually works quite well for that: it generates executables that behave like normal C/C++ programs and are quite small. Runtime performance is like Sun's best JIT.

      The trouble, of course, is that gcj cannot implement the Java2 platform because large chunks of that are proprietary. So, you get a decent Java language compiler, but your code will be Linux specific, which is kind of defeating the purpose. In that case, you might as well look beyond Java for other, perhaps more elegant, languages.

      Personally, I like O'CAML (search for "ocaml" on Google). It has none of the warts of Java or C#, it compiles into good code, and there are lots of libraries available for it.

  42. Java won't die easily, if at all by Rams�s+Morales · · Score: 1

    Yup, it is sad that to use the Java platform you have to code everything in Java. Yes, it is great that to code for .NET platform implementations, you will be able to work on any language.

    But only in Java you'll get true "code once, run everywhere"... yes, I know that M$ standarized the core of .NET, and that you can write your own implementation, BUT, all M$ .NET developers are using .NET to use M$-only technologies, like COM and OLE. And, for example, I'm going to use MONO to write GNOME apps, and I'm sure I'll use CLR apis on MONO that will depend on libraries that are only available on Linux/GNOME (until someone ports them to windows).

    My point is that, altough you can write platform independent apps on .NET, no one is going to write platform independent apps on .NET/MONO.

    So Java still has one important advantage. And I think that "code once, run everywhere" is usefull in many situations.

  43. Re:Who knows. The important thing.... by Anonymous Coward · · Score: 0

    Yep. As the judge pointed out, it IS their fault.

  44. Re:Poor Micheal by Anonymous Coward · · Score: 0

    Personally, I like how the same link answering the stupid question at the end was posted 9 times within 10 minutes.

  45. .NET is a closed specification by sigmond · · Score: 1

    With apologies to Miguel "Everything else that was easy didn't get standardized, but the important parts did." de Icaza, Microsoft has already demonstrated that they will add and extend API's in the .NET platform that are not part of the public specification. As with Wine the Mono project will _always_ be playing catch up to MSFT. This gives MSFT first mover advantage and should invalidate the claim of .NET's cross platform capabilities.

    In contrast the Java Community Process (jcp.org) publicly discloses the API specifications for Java Standard Edition, Java 2 Enterprise Edition and Java Micro Edition. Anyone can join the JCP. Any vendor who ships a product branded with any of these names has access to these open specifications. Any developer who programs to these specifications can deploy to any of these vendors. Thus Java is not only multiplatform it is also multi-vendor and open in a way that the .NET platform will never be.

  46. Not really feasable by Temporal · · Score: 2, Informative

    The Java virtual machine is very much designed around the Java programming language. I have heard about other languages being able to compile to it (isn't there an Ada -> JVM compiler?), but basically the language has to be lucky and use the same general feature set. Compiling C++ to the JVM would not be reasonably possible, since the JVM does not support raw pointers (for a good reason: if pointers were allowed, it would be impossible to verify that a Java applet was safe to run locally).

    Microsoft's CLR (common language runtime; part of .NET) defines a virtual machine which can run many languages, while posessing the verifiably secure properties of Java bytecode specifically for those languages which make such verifiability possible (basically, languages without raw pointers). If you want a VM that supports multiple languages, the CLR is really the best option right now.

    Personally, I am not convinced that such a common runtime is always an advantage. The CLR basically defines its own machine language, with all the basic instructions you'd see in any other assembly language. I don't like that approach because it is too low-level, and makes optimization harder. Allow me to explain...

    It is a rather common misconception that bytecode-compiled languages must necessarily be slower than native compiled languages. The opposite is actually true in many cases. If you are running your bytecode on some sort of interpreter, then yes, it will be slower, but typically bytecode is re-compiled to native code at runtime. When this happens, the compiler can perform all sorts of optimizations specific to the host machine, OS, and the exact library set in use, which would be impossible if the software were distributed as native code. Thus, the code actually ends up faster... in Java's case, it can approach the speed of C, which is surprising considering all the abstraction in the Java language -- based on the languages alone, you would expect Java to be much slower.

    Anyway, getting back to the point, higher level bytecode descriptions allow more optimization on the host machine. I am actually desiging a programming language right now, and my bytecode is only a little more than a parse tree. I like it that way. :)

    Just think of the language runtime like a library. Different programs use different libraries. What's wrong with that?

    1. Re:Not really feasable by HawkingMattress · · Score: 1

      It is a rather common misconception that bytecode-compiled languages must necessarily be slower than native compiled languages. The opposite is actually true in many cases. If you are running your bytecode on some sort of interpreter, then yes, it will be slower, but typically bytecode is re-compiled to native code at runtime. When this happens, the compiler can perform all sorts of optimizations specific to the host machine, OS, and the exact library set in use, which would be impossible if the software were distributed as native code. Thus, the code actually ends up faster... in Java's case, it can approach the speed of C

      Nice theory, now can you explain me why every java apps that I've run is at least 10x slower than their C equivalent ?

    2. Re:Not really feasable by Temporal · · Score: 1

      http://www.bagley.org/~doug/shootout/craps.shtml

      Here you see Java scoring 703 vs. C's 752 in a wide range of unbiased speed tests. Do you have anything to back up your claim?

      (I would have made that an HTML link, but the site checks the referring URL and gives you a page about how much Slashdot sucks if you are coming from Slashdot.)

    3. Re:Not really feasable by HawkingMattress · · Score: 1

      Here you see Java scoring 703 vs. C's 752 in a wide range of unbiased speed tests. Do you have anything to back up your claim?

      Sorry but these tests ignore the area where java speed really sucks : the GUI, of course.
      Who cares about the time it takes to concatenate strings or instantiate a class... the only thing you see as a user is the GUI. It's like that feeling you have when you just bought a new pc, everything seems to render much faster than before when you click menus etc (ok that's on windows ;) except with java it's the opposite ! that simple thing makes java apps not pleasant to use to me.
      However server side this is a different problem of course. I admit java has a real strength here, even if I hate using it.
      (What I personally hate about java is that it I feel it turns what could be cool hacks into what I like to call a massively boring shit ;) Maybe I didn't get enough into it to be able to fully appreciate it...

    4. Re:Not really feasable by Anonymous Coward · · Score: 0

      the jvm supports pointers, what do you think a reference is....

    5. Re:Not really feasable by Anonymous Coward · · Score: 0

      you are of course correct. according to these javajos the speed of java has doubled every year for the last 6 years running.

      by this logic tuned java code at this point will blow by machine code, let alone C.

      i will never buy these idiotic speed claims. the problem with java programmers is they actually think they know how computers work down at the metal. just because you've never drowned in a bathtub doesn't mean you know how to swim. computers don't operate in terms of objects, but in terms of bytes. a blinding flash of the obvious i know, but one easily overlooked when you used to operating at java's abstraction levels. C's reliance on pointers alone is enuf to ensure that it mauls java and leaves it for dead in the speed department. And there are other not-so-obvious tricks you can pull in C that increase the speed of a program by 3x over a more naive C implementation.

    6. Re:Not really feasable by Anonymous Coward · · Score: 0

      Calling a reference a "pointer" implies that pointer arithmetic is supported, which no typesafe language can offer.

    7. Re:Not really feasable by AntonyBartlett · · Score: 1
      Certainly not at all feasible at the moment - or at least wasn't a few months ago when I looked into it (when I also examined many of the sites linked at the top of this article, more closely apparently than the first posters who claimed it's already been done-and-dusted).

      And yes indeed, raw pointers are a fundamental problem when compiling C/C++/etc for the JVM. Personally I would work around the problem by virtualising the memory used by the C program. Imagine a java class with, say, a peek method, a poke method, and a member variable containing one huge buffer (actually that's not sophisticated enough, but should convey the general idea). If the code is compiled to use this class as memory, rather than directly accessing the JVM's memory, then suddenly it can do pointer arithmetic to it's hearts content, without being thrown out of the JVM, and without compromising any sandbox.

      You now have a PC running a virtual machine which is itself running a virtual memory manager. This notion is going to make some people cringe, especially those who think that Java is already slow. I agree that this solution would only be fast enough to work for legacy code, but if we suppose that you are already serious about moving to the JVM platform, then hello, wake up, your existing code is already legacy anyway.

      Personally I can see it working. When I can run Angband (a game written in *very* portable C) in a Java applet I'll be satisfied... or maybe that just goes to show I'm crazy.

    8. Re:Not really feasable by Temporal · · Score: 1

      Yeah, well... so the GUI library is slow. That's the GUI library's fault, not the language. You can write a slow library in C, too.

  47. AspectJ by twisty · · Score: 2, Informative
    The newest progression after object oriented programming seems to be Aspect Oriented programming. At the world famous Palo Alto Research Center, AspectJ was developed to compile AOP software into Java Bytecode. http://www.aspectj.org/

    Of course, it's not a true departure from Java... it even recommends that program filenames end in .java . It can compile java code, but not the other way around.

    1. Re:AspectJ by psychofox · · Score: 1
      AspectJ is not a new language - its an extension to the Java programming language (adding about 5 or 6 new keywords). It allows you to modularize crosscutting appliation concerns, i.e. logging / profiling / debugging / session management.

      I recommend reading Aspect-Oriented Programming with AspectL or one of the many web sites on the topic if you are interested.

    2. Re:AspectJ by Ivan+the+Terrible · · Score: 2, Informative
      A better URL for all aspects ;-) of Aspect-Oriented Programming is this.

      BTW, when compiling standard Java, the AspectJ compiler produces the same bytecodes that are produced by a standard Java compiler because the same compiler is used.

      The first incarnation of the compiler produced Java code that was then compiled by a standard Java compiler. The second produced bytecode directly, and the current version -- I believe -- uses a modified Eclipse compiler.

  48. Re:I'm so pissed off by Anonymous Coward · · Score: 0

    After waiting for 45 minutes to make my comment, that I can't even rememebr what it is now.

    Must have been something really meaningful and worthwhile then.

  49. Re:Poor Micheal by Gortbusters.org · · Score: 0, Offtopic

    Guess Michael didn't have his cup of Java this morning? Har Har Har.

    --
    --------
    Free your mind.
  50. Nope still a duck... by SerpentMage · · Score: 1

    What you are talking about is Managed C++ and beyond. That is != C++.... Once a 100% specification of C++ is implemented in .NET then I will believe it....

    --

    "You can't make a race horse of a pig"
    "No," said Samuel, "but you can make very fast pig"
    1. Re:Nope still a duck... by The+Bungi · · Score: 1
      What you are talking about is Managed C++ and beyond. That is != C++

      You're confusing a language with its final binary executable representation.

      Take a deep breath and think about what you're posting here. And then stop.

    2. Re:Nope still a duck... by Anonymous Coward · · Score: 0

      No he is not. He is not confusing the language for the binary file format. You are the one who is confused. Stated for the third time because you are such a freaking moron:

      Managed C++ != C++

      In fact, it doesn't even come close. Just so you get it through that stubborn melon on top of your skull, we are talking about the _language_ (try to compile a large C++ program into managed code) and not the executable format.

    3. Re:Nope still a duck... by SerpentMage · · Score: 1

      Managed C++ is not C++.

      Managed C++ introduces a number of changes into the language so that it can work with IL. This in turn does not make it C++ specific.

      Ok, lets turn the table. If I take a managed C++ application, can I compile it with gcc? No? That is what I thought because it is not C++....

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    4. Re:Nope still a duck... by aled · · Score: 1

      Does anybody have a 100% specification complying implementation of C++?
      Answer: no, C++ is so complex that nobody have achieved it.

      --

      "I think this line is mostly filler"
  51. The client doesn't control the Future of Java by jeremy_a · · Score: 5, Interesting

    I think people make a bigger deal of MS shipping Java than they should. Java on the client has been in pretty sad shape for a long time, yet Java's popularity has grown. It's used a lot for server-side applications, and apparently in embedded applications as well (although I'm not as familiar with that side of things). Whether or not MS ships a decent JVM on Windows doesn't change this -- Java will continue to be used just as it is today.

    Does it make a difference for Java on the client? Maybe. Although most of my Java work has been on the server side of things, I have written a couple of Java client apps as well. But those were for use inside the intranet, so it wasn't a big deal to require users to install a JVM. It certainly won't solve all of Java's client-side problems. Performance is much less of a problem than it was in the early JVMs, but most Java clients are still slower than their native counterparts. Perhaps more importantly, there are quite a few bugs in the GUI libraries (both Swing and AWT) that make it difficult to write highly polished applications. And with Swing you get problems with the look-and-feel not matching the native platform, which is a problem for some. But I think that part of the reason why these are still problems is because Java on the client hasn't really taken off -- maybe more of these issues will get solved if people start looking at Java as a valid client platform (because MS is shipping it with Windows) and start writing more client apps.

    But regardless of whether it makes a difference, I think the ruling does make sense. MS had a contract to provide a compatible JVM, and they didn't hold up their end of the contract. (At least that's my understanding -- I don't know the complete details of the contract.) Therefore they should have to make ammends -- maybe it is too late to "save Java" on the client, but it shouldn't hurt.

    1. Re:The client doesn't control the Future of Java by Anonymous Coward · · Score: 0
      But regardless of whether it makes a difference, I think the ruling does make sense. MS had a contract to provide a compatible JVM, and they didn't hold up their end of the contract.

      Not true. I read through the original agreement from a year ago, and Microsoft is strictly prohibited from improving their JVM in any way other than bugfixes.

    2. Re:The client doesn't control the Future of Java by cmason · · Score: 1
      It's used a lot for server-side applications,

      Now I may sound like an idiot for saying this, but java never made sense as a server-side language. It wasn't designed as a server-side language, it was designed as a client-side language. I've never really understood why people say "we use java on the server because it's write-once run-anywhere." It doesn't make sense: on a server you have complete control of the hardware so compiling to machine code is both possible and good for performance. Also, the things that make cross platform coding really difficult are more easily abstracted in a server environment than in a client environment (in my opinion, no one, possibly save mozilla, has truely created a cross-platform client app).

      There have to be other reasons why people use java on the server side. I believe it's because of the library. I think the library is what makes java popular, and it's the library that makes it so much easier to code server-side stuff in java. The library, and other tools like app servers do a good job of abstraction on the server-side. Other languages lose in this regard, particularly C++, which doesn't even have a hashtable (hash_map<> isn't part of the standard STL).

      Perhaps more importantly, there are quite a few bugs in the GUI libraries (both Swing and AWT) that make it difficult to write highly polished applications.

      The vast majority of the highly polished client apps written in java seem to be java editors (Together, IntelliJ, Eclipse, etc.). And even these aren't exactly models of cross platform goodness. This is because it's exteremely difficult to write good cross platform client apps in java. Much more difficult than writing cross platform server apps in java. There is really only one GUI toolkit (AWT/Swing) for java (SWT is only linux and win, and the linux support isn't that good). And this toolkit is difficult to use and even more difficult to extend. (Try writing your own widget in Swing, believe me you don't want to.) That said, I believe java gets closer to a cross platform client library than anything else (again, possibly save mozilla which I think could be a contender but it's hard to know given how fucking enormous in scope it is).

      All this is to say that I hope that the inclusion of java on windows motivates Sun or someone to really focus on improving Swing so that it's:

      • Possible to write really good client side apps that behave appropriately on the various platforms. Start with supporting more of the common widgets well (like sortable tables, &c).
      • Easier to write said apps (like Cocoa easy).
      • Possible to extend swing in a fashion that doesn't make you want to defenstrate yourself.
      By capitalizing on java's strength (namely, the library) and making that library best of class for GUIs, sun can win in the client space. But does sun care?
      --
      "If you are an idealist it doesn't matter what you do or what goes on around you, because it isn't real anyway."-R.P.W.
  52. JVM plays rough by varjag · · Score: 4, Insightful

    Miguel de Icaza point to the advantage of being able to compile from multiple languages.

    As a person who've got a feel of writing JVM-targeted compilers, I'd like to notice that it makes extremely poor target for other languages. JVM was designed explicitly for Java, without any other language in mind. Thus, writing translators from other languages takes certain number of convoluted tricks.

    If your source language has closures, true lexical scoping, multimethods or multiple inheritance, JVM is clearly a suboptimal vehicle, unless you want to bend over a lot. From performance standpoint, its stack-oriented machine isn't optimal either. JVM architecture also leaves no easy ways to implement proper tail-recursion.

    CLR is likely a much better target, but even that one, designed for interoperability from scratch, has some rough edges for non-mainstream programming languages.

    --
    Lisp is the Tengwar of programming languages.
    1. Re:JVM plays rough by Anonymous Coward · · Score: 1

      You're missing the point. The byte code is left intentionally simple and unoptimized so that the JIT can optimize it. Have you ever looked at the output of javac? It's positively brain-dead and simple--there are no optimizations. Why the heck is that? Why would Sun fail, after all these years, to finally make a javac that outputs optimized byte code? (It's surely not because they lack the talent--look at Solaris for heaven's sake and PVDL's work in cc.) If you find yourself stumped by these questions, then you've not carefully throught through the nature of interpreted languages.

      All of the improvements you've suggested (e.g., tail recursion) are done not by a human (who can make mistakes) but rather by a JIT. The run-time optimizations are inspired by Sun's work in Self. Read more at this place

      Sun does lots of research into language theory, and Java/JIT has benefited from their work in Self and in other compiler areas.

      The idea is that the common compiler fixes (constant folding, force reduction, tail recursion, loop unrolling, etc.) are so well defined that there's no point in doing them by (failable) hand. Instead, let the 4-th generation JIT accomplish them, and more.

    2. Re:JVM plays rough by varjag · · Score: 1

      All of the improvements you've suggested (e.g., tail recursion) are done not by a human (who can make mistakes) but rather by a JIT.

      Even if there actually exists a JIT complier that does tail call elimination, there is absolutely no (zero, none) support for closures and lexical scope. Ditto for multimethods. Ditto for multiple inheritance. It is not that JVM simply lacks support for them, you have to fight JVM architecture to have them.

      I know that some of the best language designers work for Sun (Steele, Gosling among them). But I also know that support for other languages wasn't among their design goals. JVM does a fair job being a virtual machine for Java, but sucks for other lanugages.

      --
      Lisp is the Tengwar of programming languages.
    3. Re:JVM plays rough by Anonymous Coward · · Score: 1, Insightful

      Of course, your specific complaints apply equally well to the Microsoft .NET system -- despite it being nominally designed for multiple languages. In practice your language has to be pretty close to C# (which in turn is very similar to Java) to work. Witness the way Microsoft went through contortions to produce "Managed C++" and VB.Net instead of using plain vanilla C++ or VB. The languages simply had to be modified to fit the CLR model.

  53. Cross Compilation by Inflatable+Hippo · · Score: 1

    I've considered doing this on several occasions, but always bailed when it comes to outputting class files.

    It's far easier to use Java as the output of your "compiler" and then let javac do the hard work for you.

    It's also a lot easier to debug too.

    With a little effort the auto-generated code can be pretty readable and sensibly relate back to the original "code".

    You get to the same place in the end though, and probably quicker (from a development time perspective).

    I used to use this lovely thing called MetaTool (from AT&T) for this sort of stuff but now there's tools like javacc that I think are free and, of course, written in java.

  54. Java is poised to conquer by Anonymous Coward · · Score: 1, Interesting

    I think Java is in an excellent position. There's no doubt that Microsoft could kill any technology that relies on Windows, but Java is in a very strong position nonetheless. With Mac, Windows, and Linux all thriving, it only makes Java stronger. The stronger either Linux, Mac, or another OS alternative gets, the stronger Java will get.

    Otherwise, I could not be happier with it. It's a truly unbelievable technology. I would classify as one of those that did not have an "existing investment" to protect, but I think the reasons for writing an application in Java are enough to warrant it. It was a bold move not to allow direct memory access, and it's a strategy that will pay off. As network use increases, Java is like Noah's Ark in terms of stability, security, and network performance. People thought they were crazy, but now they're starting to understand. Sun said the "network is the computer" so long ago it's not even funny, and Microsoft is trying to act like a visionary with .NET, and it comes across as simply a ringing endorsement of Java. Nothing can match Java's openness, flexibility, and power.

    That said, I think the only real chance for .NET is for Microsoft to GPL their implementation. They will have to compete in the areas of openness and competition on the Internet, or the Internet will eventually win. That would be the only possible advantage that would make developers shift away from Java. Miguel, although he may enjoy the limelight, is seriously deluded and is bringing his confusion to others. What he is using and plans to incorporate into his strategy is not .NET. He is using the CLR and C# specs, NOTHING more. Even if those are standardized and "protected" somehow legally (a legal body standing up to Microsoft remains to be seen, which is why this Java ruling is promising), it is a small subset of .NET. He should avoid using that moniker, since it confuses everyone. He is not using .NET. He is not using .NET. He is not using .NET. He is not using .NET. He is not using .NET. Miguel, you there? You are not using .NET. Stop using that word. There, that will hopefully help to counter his blatant attention grabbing.

    1. Re:Java is poised to conquer by TheShadow · · Score: 1

      He is not using .NET. He is not using .NET. He is not using .NET. He is not using .NET. He is not using .NET. Miguel, you there? You are not using .NET.

      Yeah he's not "using" .NET... but the Mono project is _implementing_ most of it:

      - CLR
      - Class Libraries
      - C# and VB.NET compilers
      - ADO.NET
      - ASP.NET

      Isn't the rest of ".NET" built upon those things?

      --

      --
      "What do you want me to do? Whack a guy? Off a guy? Whack off a guy? Cause I'm married."
    2. Re:Java is poised to conquer by Anonymous Coward · · Score: 0

      Yah, and you think that is a winning strategy?

      When pressed about .NET VS Java, Miguel will claim that Mono benefits from all the cool API's like ADO.NET that Mono is implementing. He'll also point to the multiple-language nature and how that appeals to GNOME (which is absurd since GNOME already has every concievable language).

      When pressed about Microsoft and the patent issue, Miguel will claim that (and/or):

      1. Microsoft doesn't have any valid patents.
      2. Even if they had valid patents, they wouldn't use it against Mono because they like Mono and I made friends with them.
      3. Even if they enforce some patent, GNOME will benefit from the ECMA spec and a new development model.

      Problem is, number 3 negates all the advantages Miguel sees in .NET. He is deluded and is leading others into a nightmare for free software.

    3. Re:Java is poised to conquer by spongman · · Score: 1
      He is using the CLR and C# specs, NOTHING more.
      Errr... no. If you took the time to actually look at the Mono Home Page you'll see that the goal is to implement almost all of the .NET libraries, including ADO.NET, ASP.NET, XML, Web Services, Remoting, etc... The only parts that Ximian isn't interested in doing are Windows.Forms and COM interop, but they're certainly not discouraging others to contribute those to the Mono project.
  55. Re:Not really feasable - missing the target by Anonymous Coward · · Score: 0

    Two PC orientated are making lots of money: Microsoft and Intel

    Both have a proprietary platform (Intel instruction set / Windows ) that is almost everywhere

    Meanwhile PCs are increasingly low margin commodoties.

    I think the real target for .net and Microsoft CLR is Intel.

  56. Cross-language compatability by samael · · Score: 2, Interesting

    I know that multiple languages can compile to Java Bytecode.

    Can anyone tell me if one Java-compiling language can use objects written in another one?

    To me, this was a major advantage of .NET, and I'm wondering if Java can do it too.

    1. Re:Cross-language compatability by Anonymous Coward · · Score: 0

      Without having tried what you're asking I can safely say that yes, of course, you can. In order to use an object you only (obviously) need the bytecode (the class) for that object.
      How that bytecode was produced is irrelevant; for all I care you could have done with a HEX-editor.

      If you want to make changes to the class it might be a little more difficult though (again, obviously) as its source code may not be written in a language familiar to you. But then again, there exist excellent decompilers...

    2. Re:Cross-language compatability by linuxwolf · · Score: 1

      If the language can be compiled to Java bytecodes, then any JVM-supporting language should be able to use your compiled, not-from-java code. I say should, and not will, because it's now an issue of the compiler than the JVM. If you can compile against only the bytecodes (like javac can), then there's no issues.

      On the other hand, you can always determine the Java-esque structure of your not-from-Java bytecodes using Introspection, for which there are tools (like Netbeans) that provide graphical views of this. It should be possible to generate any "headers" or their like, if the language and the compiler require it.

      For the less-then-initiated, more JVM-supporting languages can be found here.

    3. Re:Cross-language compatability by BigTom · · Score: 1

      Jython can, so can Bistro, hell I expect more can than can't.

    4. Re:Cross-language compatability by will_die · · Score: 1

      If it is bytecode compliant it will.
      From my own experience it works. We had a set of old Ada libraries, that they compiled to Java bytecode on a Solaris machine, we then pulled the bytecode libraries over to Linux and windows machines and made calls to them from pure Java programs. No problems.

  57. hobbyists threaten anarchrist movemeNT? by Anonymous Coward · · Score: 0

    just to get something as useful as java, onto the 'survivors' list, was a feet of gnu technology. IT shouldn't be LIEk that?

    so, acknowledging that J.'s had his head held up his .asp, for a while (to the poiNT of asphixiation in some cases), there's a few things to understand.

    at some point, no doubt, many more will realize that there's more on the LIEn here, than a few billyuns in stock markup fraud, & that yOUR represeNTation upon capitoll hill, is akin to that of same, in the frauduleNT stock markup/?pr?/softwar bullshipping industrIEs.

    as my grandma might say: they all go pottIE, through the same quill.

    the good gnus is: ALL of that payper liesense crap, is just poo. &, there's more & more evidence all the time, that there IS a God, & it's likely wanting US to have benevolent tools to keep track of ourselves, while PREVEntING unwaNTed intrusion? zock De blur?

    even better, you don't have to 'join' anything, or take any saykrud oath, promising to lie about somebody else's lies.

    members only my .asp.

  58. Java as CSharp == null by r4lv3k · · Score: 1

    C#: Delegates, events, properties, advanced introspection, seamless integration with modern W3C standards (XML/XSD/XPath/SOAP)!
    Java: Annoying workarounds to do achieve the same thing!

    And don't even get me started on reflection emit!

    The java language has become stagnated and should embrace new concepts that simplify design if it wants to remain relevant. It was the best thing around 8 years ago, now it must evolve with the times, or get left behind as a legacy platform.

    If C#/.NET/ECMA CLR delivers new more effective approaches to design, then it will become the language/platform/religion of choice.

    ralvek

    1. Re:Java as CSharp == null by Jord · · Score: 1
      Is it troll hunting season yet?

      C# is a [bad] clone of Java. The java language has hardly become stagnate and is constantly evolving to include what exists. Perhaps you should put down your MS propaganda manual and try looking around on the net for what is available.

      It was the best thing around 8 years ago

      This one made me nearly fall out of my chair! When java was released (just under 8 years ago). It was very slow and clunky. Java now is the best thing around, imo.

      Perhaps you should go back to school or read a book and learn what reflection is and does. I find it to be an extremely powerful and flexible API for writing dynamic code easier and faster than any other language I have yet to run across. I have written things in java utilizing reflection that would have made me cry if I had to write them in C/C++.

      Lets give this new MS language a couple of years and see how well it survives. Maybe by then the world will actually have examples of what .net is rather than just PR hype

    2. Re:Java as CSharp == null by Anonymous Coward · · Score: 0

      Evolving? You must be joking. Even the Java pundits over at O'Reilly had a list of things that Java needs in order to evolve as a language.

      Java does not have typesafe collections. It still hase machine types that cause headaches for reflection.

      The class libraries have advanced, but the langauge itself has gone nowhere.

  59. NetREXX by atcurtis · · Score: 2, Interesting


    NetREXX came available while Java was still in it's 1.1 iterations... Developed by Mike Colinshaw (spelling probably very wrong) at IBM.

    --
    -- The universe began. Life started on a billion worlds...
    -- Except on one where stupidity was there first.
  60. Lets get it out of the way... by japhar81 · · Score: 3, Funny
    (although KDE3's stupid mouseover-activates-form-elements user interface, now finally fixed in the latest versions, has to take some blame too).

    Responses that are sure to follow:

    • Should have used GNOME
    • This was fixed 6 releases ago, upgrade from .0001 to .000009.
    • GUIs are for lusers, use the CLI
    • You should rewrite this in perl
    • You should rewrite this in COBOL
    • You should rewrite this in python running on top of a JVM inside a VMWare session of windows XP which is running inside a VMWare session of Minix.
  61. Re:Poor Micheal by Graspee_Leemoor · · Score: 0, Offtopic

    Check out the moderation totals on this post (5143337). At time of writing they are:

    "Moderations: 70% Offtopic, 40% Funny"

    WTF?

    Oh, fucking offtopic here I come again.

    graspee

  62. They'll only have two languages each by BigTom · · Score: 2, Interesting

    The JVM supports loads of languages and so does the CLR. But who cares? People will develop, almost exclusively, in C# and VB on the CLR and people will develop, almost exclusively, in Java (and a scripting language, Jython I hope) on the JVM.

    All the rest are side shows.

    The JVM is cross platform now. The CLR might be, but might not (I'll believe it when its running on PalmOs and Symbian, not just Linux and BSD).

    BigTom

    1. Re:They'll only have two languages each by oPless · · Score: 1

      .NET will probably not run on PalmOS *ever*. PalmOS isn't really geared up for it. The Java implemetations that run on it(IBMs J5, Suns MIDP, and Waba) are /very/ cut down versions. Let us not forget that PalmOS doesn't have a filesystem as such, either. Perhaps the Mobile .NET edition (SPOT?) will, as they're (M$) trying to get watches, pens, etc to run CLR bytecode - I've not had time to have much of a look into it though.

      Symbian would probably be the most likely platform to be able to run the full blown .NET given enough RAM and storage.

      CLR is cross platform NOW. Its just the APIs that need catching up :-)

  63. Java is the new COBOL by The+Famous+Brett+Wat · · Score: 5, Interesting
    Slightly off-topic, but I'm in the process of perusing the job ads again, and based on the proliferation of J2EE/EJB and other Java stuff I'm seeing, I think that Java is the new COBOL. Not that the languages bear any similarity whatsoever, but Java seems to have found a niche as the new lingua franca of business apps. It has competition, to be sure, but based on the history of COBOL, I would be so bold as to put my pundit hat on and say, "Java programming will be a safe bet for long-term employment in the computing industry." The jobs aren't necessarily all that interesting, but they look a whole lot more secure than the bleeding edge tech jobs which come and go in a flash.

    The whole C# and .Net thing is a potential competitor in the same arena, but I don't think that Microsoft's inclusion (or not) of Java is going to matter much. I always figured that Java was intended to allow cross-platform desktop app programming, but the niche it seems to be filling is a back-end role. Personally, I had expected Perl to fill this role as the new COBOL, but demand for Perl seems to be way down, except as one of those "we also expect you to know Perl" type things, which never actually turns out to be important in the job.

    --
    proof, n. A demonstration that a conclusion is implied by certain premises and axioms.
    1. Re:Java is the new COBOL by rgraham · · Score: 1

      It's funny you should say that about Java with regards to COBOL. I was at a Java users group a few months back and someone said the exact same thing. So many enterprises are building systems today with Java that are probably going to be around for quite awhile. I certainly hope so, Java has been real good to me.

    2. Re:Java is the new COBOL by Anonymous Coward · · Score: 0

      And just like COBOL, it sucks

  64. JVM actually has more languages than .NET (CLR) by borkbork · · Score: 4, Informative

    The page you list shows a hundred or so that run on the JVM. A similar page for .NET shows only 27.

    Not what the marketing folks at Microsoft would have you believe, huh?

    --
    ---- There is a fine line between sayings that make sense.
    1. Re:JVM actually has more languages than .NET (CLR) by blowdart · · Score: 1

      But out of those hundred or so, how many are "useful" to every day developers?

      Great, there's a LOGO compiler, lets use that to write our new CRM system

    2. Re:JVM actually has more languages than .NET (CLR) by Samus · · Score: 1

      Probably a bit more than whats useful on the .NET page. Especially when you consider that the perl and python .net compilers were only experimental and are slow and unsupported.
      To be honest I doubt any of the secondary languages for the JVM and CLR are used very much. I think they are mostly just academic.

      --
      In Republican America phones tap you.
    3. Re:JVM actually has more languages than .NET (CLR) by jovlinger · · Score: 1

      It's more of a question of _how well_ a VM runs a language. The designers knew better, but failed to propagate certain properties to the final design ( for reasons either political or practical). These issues make the JVM very difficult to target from functional languages.

      Which is a shame, because even if you don't like them as a whole, functional languages have some REALLY nice concepts. In particular, the JVM makes it very difficult to model continuations and tail calls.

      When you look at that list of JVM languages, group them into language categories. I suspect you'll see that the JVM has relatively little support from non-OOish languages. Which is not to say it can't be done (witness ML for the JVM), but it is REALLY hard to do well.

      For all their Evil-Emipire posturing, M$ asked researchers about what sort of properties the .NET VM needed. .NET is rumored to be a much nicer target than the JVM.

    4. Re:JVM actually has more languages than .NET (CLR) by Anonymous Coward · · Score: 0
      And it still doesn't cover functional languages well. Specifically, Microsoft's attempt at building a layer, ILX, for targetting .NET with functional languages is deficient in many ways. For instance, it cannot fully implement ML's type system or Haskell's type abstractions. Nor is it suited for untyped work, casting doubt upon Scheme and foiling plans to port GHC to .NET.

      The rest of it might be quite good, though. I haven't heard any horror stories about targetting the VM. Since I've yet to target it myself (and that's usually the best way to discover a whole bunch of difficulties with a design that you'd never see while reading), I can't say too much more than what researchers and Microsoft are saying.

    5. Re:JVM actually has more languages than .NET (CLR) by damiam · · Score: 1

      The .net page is pretty obviously incomplete - it doesn't even show Visual Basic. In any case, I'll bet less than 1% of Java or .NET projects are developed with anothing other than Java or C# (and maybe VB.net).

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
    6. Re:JVM actually has more languages than .NET (CLR) by chworktap · · Score: 1
      Of course, Java has been out much longer than CLR. Its my impression, though, from comparing MSIL to JASM, that MSIL was designed from the ground up for inter-language interop, much more so than Java was: so, it has lot more features for language developers. Since MS simultaneously created numerous compilers while building the CLR (C#, MC++, J#, VB.NET, ML, F#, JScript.NET, etc) they were able to change MSIL appropriately to accomodate these languages. For example:
      • MSIL has support for methods outside of classes, but C# has no such support.
      • With MSIL, you can modify a boxed value without reboxing, but C# doesn't allow you to do this.
      • There's a lot more interop in MSIL that isn't surfaced to C#
      • etc...
      It seems JASM was originally optimized to be best suited for the Java language whereas MSIL was developed with multiple languages in mind. CLR is better suited for multiple languages, IMHO.
    7. Re:JVM actually has more languages than .NET (CLR) by nickos · · Score: 1

      It's interesting to compare different companies attempt to make what is, after all, just an attempt to make the ultimate Hardware Abstraction Layer - Sun makes a stack based JVM specifically for running Java while MS makes the CLR for different languages.

      The Tao VM is the best virtual machine that I know of, being a nice, infinite register based VM. This means that writing a (insert language here) to Tao VM compiler is far easier and likely to be far more efficient than anything to come from Sun. Suns decision to make Java stack-based was misguided and MSs CLR is too high level for functional languages to be implemented properly. Sadly the Tao VM (or Amiga DE) is unlikely to ever make it big.

  65. Other languages by axxackall · · Score: 1
    I think that Microsoft can prove that Java really doesn't have any future and that it was just a result of past internet buble, is to include, besides JVM, many other interpreters of other languages.

    Who cares about JVM if Python, Perl and Tcl from Active State can run faster and more reliable being interpreted by a native code based interpreter?

    Besides Python, Perl and Tcl, there are many good natively (means: safe and fast) working interpreters on Windows: Prolog, Lisp, Haskell, Erlang, Mozart, Mercury, Ruby, and dozens of others.

    Why would I need a double interpretation, when the interpreter can work in native codes?

    And why should I limit myself to Java centric development, when right language for the right job is much better approach?

    By inlcuding other interpreters into Windows and making a good advertisement of it, Microsoft can prove that JVM is not the only choice developers have for cross-platform development.

    No need to mention that many of cross platform interpreters are licensed allowing them for being distributed with Windows. I think many developers of those interpreters would be happy to push their software to PC market, especially when the giant is pushing.

    Of course, Microsoft can try to bind interpreters to .NET, but that would not be a problem if it would be an option - use it if like it or ignore it.

    P.S. I don't like Microsoft's monopoly, although it's the only example of a bad market behaviour - look what Apple is doing. I don't like Windows/NT/2k/XP architectural design, although it wasn't the worst case until now - MacOS-9 was much worse. But I don't like Java either (especially thoughtless decision of most of companies to use Java only b/c Java is hot term on the market) and I don't like what Sun is doing with Java. I am not sure what I dislike more - Microsoft/Windows or Sun/Java, but I like to have more choices in Windows OS, that's for sure.

    --

    Less is more !
  66. Re:Poor Micheal by ender81b · · Score: 1

    too late. check out the thread now, all -1's. God bless michael.. the dude has some serious issues.

  67. Yes they did... by lseltzer · · Score: 2, Insightful

    There was a whole spec for it, picoJava I think, and I believe they even got to preliminary discussions of products. But language-specific processors have always been losers and this was always a stupid idea.

    1. Re:Yes they did... by sketerpot · · Score: 3, Interesting
      But language-specific processors have always been losers and this was always a stupid idea.

      I think that it's important to draw a distinction between the Java language and the Java bytecode. The language, IMHO, isn't very good; I much prefer Python, or if I'm developing for the Java platform, Jython. But Java is a form of bytecode that can be compiled to from all sorts of languages, so programs compiled for picoJava cold also be run transparently on many other OSes. Although I think that JIT compilers and Hotswap optimization have made this less important, it still might be nice to have a processor that could run Java bytecode natively.

      Still, I'm not too enthusiastic about it.

    2. Re:Yes they did... by hawkestein · · Score: 1

      Language-specific processors have always been losers and this was always a stupid idea.

      This is one of the first things I learned in my computer architecture class. I'm actually too young to remember previous language-specific processors. I've heard of the Lisp machines of yesteryear, but I'm not aware of any others offhand.

      --
      -- Will quantum computers run imaginary-time operating systems?
    3. Re:Yes they did... by Anonymous Coward · · Score: 0

      Yes, it is called picoJava, and you can still license the processor core from Sun for your own use. I think PTSC's chip is better though.

      Also note that picoJava is not a language-specific processor. The JVM is not the same as the Java language. These chips execute Java bytecode, not Java language.

      I mean come on, that's what this whole thread is about -- other languages that compile to JVM bytecode.

    4. Re:Yes they did... by Wylfing · · Score: 1
      The language, IMHO, isn't very good; I much prefer Python

      OK, Python is a great language. No one disputes that. But I don't get why people rag on Java so much. I am what you might call an "amateur" programmer. I've coded for projects, but it's definitely not my main thing. I was able to pick up coding in Java in no time flat, and I find that it's extremely suited to how I want to think about code. Stop disparaging Java just because it's not C/Python/Perl, etc.

      --
      Our intelligent designer has never created an animal that we couldn't improve by strapping a bomb to it.
    5. Re:Yes they did... by Zigg · · Score: 2, Interesting

      As someone who's had his head in Java code for a few months now, working on a complex system, I'll heartily rag on it. It takes twice as much code to get the same thing done as it does in Python, and the result is slower to boot. But reliability is key, and the Python VM (as well as Jython) had some problems when this project was started, so here I am.

    6. Re:Yes they did... by Pieroxy · · Score: 1

      The thing is Java is *not* only a language. It is also the specs for a JVM, something in between a computer and an OS.

      I think a processor is not a bad idea for that.

    7. Re:Yes they did... by sketerpot · · Score: 1
      Sure, Java is a decent language, and it's very easy to learn for someone who started out with C++ (me), and SWING is supposed to be a fairly nice API for GUIs, and I'm not "disparaging" Java. I'm just spoiled by Python, so a whole bunch of other languages look unpleasant and large from my viewpoint. I like being able to do things less verbosely than Java makes you do them, while still being understandable. Perl, well written, can do this, but I just sort of gravitate toward Python for things like that.

      C is nice, too; A fairly non-bloated language that's good for fast things. But Java just seems like another mediocre language.

    8. Re:Yes they did... by Nexx · · Score: 1

      As someone who has been doing Enterprise-level development for over 5 years, with many languages, I can heartily say that Java is much more preferrable than many other alternatives.

      No offense, but Java isn't a language to have considered "mastered" in a few months. When I read your post, I was more inclined to believe that your results were due to having more experience in python than Java.

      Using Sun machines, writing properly threaded Java applications (not necessarily EJB-based) tend to be "fast-enough" (with aio and whatnot) for most applications.

      Now, if you want *real* performance, spend the extra time and code it in assembler :P

    9. Re:Yes they did... by napi · · Score: 1

      Is there a coomercial C/C++ compiler or IDE that produces Java byte-code out there? I know of experimental projects like the one at U of Queensland http://www.itee.uq.edu.au/~cristina/uqbt.html#gcc- jvm But, is there a commercial one. Napi

    10. Re:Yes they did... by bwt · · Score: 1, Informative

      It takes twice as much code to get the same thing done as it does in Python, and the result is slower to boot.

      I disagree on both points.

      If you are writing enterprise applications then with java you have a **substantially** larger set of class libraries to start from, so the amount of code that you personally have to write is a lot less, so I disagree on your first point. Go take a look around the Apache Jakarta project some time. If you can show me python equivalents for a quarter of the projects there, I would be surprised.

      On the second point (speed) I can say that according to Bagley's computer shootout, you are objectively wrong. Java uses substantially less CPU than Python to do 25 standard computing tasks. Of the languages Bagley tested, Java placed 9th and python was 13th, although Java scored closer to first place C than it did to Python.

      Java's reputation as a "slow" language seems to be based on hot air. Swing is perhaps somewhat slow, but if you really want to write blazing fast GUI's you can always use the Eclipse SWT.

    11. Re:Yes they did... by FuzzyDaddy · · Score: 1
      It takes twice as much code to get the same thing done as it does in Python, and the result is slower to boot.

      > I disagree on both points.

      > If you are writing enterprise applications ...

      This is where language wars get silly. Who said the original poster was writing enterprise applications? Don't think your application is the final measure of a programming language for everyone, just because it is for you.

      --
      It's not wasting time, I'm educating myself.
  68. Parrot Code is the way to go! by bahwi · · Score: 1

    Parrot is the way to go. It's open source, virtual machine. Supports some languages already, but the VM is still under development and needs some help. Come on, even Java will compile to it in the future. =)

  69. Re:Java hype by FortKnox · · Score: 1

    Read the EJB specs, then look at a well designed JSP page (complete with taglibs), then read up on struts (ok, there are struts-like libraries in other languages, but I like to give it props).

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  70. JiL - java in lisp ... compiles to the jvm by ep385 · · Score: 2, Informative

    Here's another language JiL that compiles to Java Byte Codes. It's a language that's better than Java but worse than Common Lisp, so it kind of sits there in the middle.

    It allows Java programmers to get around one of Java's biggest weaknesses - the lack of a macros.

    http://www.franz.com/support/documentation/6.2/doc /jil.htm

  71. Guilty of making Sun products suck! by Anonymous Coward · · Score: 0

    Java would be zippy and responsive had you included it earlier in Windows, but now it's slow and shitty, and it's ALL YOUR FAULT, Bill Gates. For shame! Quit making Sun's products suck!

    And quit making MS Office too so that StarOffice can SUCK less too.

  72. Re:Java hype by Anonymous Coward · · Score: 1, Insightful

    Originally, lots of people jumped on the Java boat because they realized it was a Full Employment program for Programmers. Rather than small groups of smart people, it allowed you to "scale" development to huge groups of people writing cookie-cutter code.

    Manager building his empire? "Architect" looking for power? Sick of butting heads with you know-it-all coworkers? Pissed at that stupid Oracle DBA who won't let you do what you want?

    No problem! Just adopt the Java "development pattern" and you'll have a team of 30 coders and 3 business analysts and 10 QA people in no time flat! Nobody has any idea what the fuck is going on, but the thing will eventually get finished.

    Great. Except now, the whole process has been routinized to the point that you can just ship it off-shore for 1/10th the cost and the same craptastic results. No job for you!

    But wait, Microsoft still believes in The Myth Of The Ueber-Programmer. Start boning up on that dotNet...

    I look at their code and it appears to me like they don't know how to use a relational database, so they spend a bunch of code on reinventing indexing, joining, multi-user contentent management, persistence, searching, sorting, etc. using "patterns"

    Well said.

  73. My Java Experience by Samus · · Score: 1

    Overall my java experience has been nice. I've done a little bit of everything across the spectrum, server side, desktop and pda. I really enjoy java on the server side. Whether doing a server program or a plugin such as a servlet its nice. The NIO classes in 1.4 make server programming much more robust while open source java tools from apache make web development feel right. Anytime I've done asp and com development (vb) I always feel like I'm doing procedural code in an object oriented environment.

    Desktop java has been ok. I don't do much on that end anymore because I have no need. Swing has a nice api but my experience with some of the larger swing apps (Jbuilder and Netbeans) kind of make me shy away from it. Eclipse is a different story. I think that would be worth doing desktop development with.

    PDA java is basically a throwback to the 1.1 days. At least on the Zaurus. Its Personal Java which is pretty much 1.1 for pdas. The Zaurus awt implementation leaves a bit to be desired. I hear its the same on the iPaq just different issues. I saw that IBM is looking at releasing a swt version for QT/E. That should be worth looking at.

    All in all I have to say that I have enjoyed my java development experience.

    --
    In Republican America phones tap you.
  74. NetRexx by ErroneousBee · · Score: 1

    There was quite a bit of interest in NetRexx about 5 years ago, as there are quite a few MVS (aka zOS OS/390 etc) developers familiar with Rexx.

    At the time Java was very weak when dealing with strings, and the old crusty C syntax was a real turn-off for folks used to PLI and COBOL.

    Ive not heard of any real NetRexx activity recently, although the web site shows its still being activly developed.

    NetRexx is an IBM thing, so may become more popular as Eclipse and Websphere penetrate the core business divisions of large enterprises. NetRexx is able to use the Java APIs, so there is no problem getting at J2EE and SWT stuff.

    --
    **TODO** Steal someone elses sig.
  75. Re:Java hype by Gortbusters.org · · Score: 1

    Yes, Java hype is very bad. Whenever I took a java course - in college or from work - it would always have an introduction to a section.

    The introduction went something like this:

    "This is possible using programming-language-X but has these sort of things that make it annoying for the programmer. Java provides the best solution for Y."

    The J-Books (java books) would do much better to just present java's solution to a given problem or technology space, rather than trying to convince me to drop everything and make me a jdeveloper!

    --
    --------
    Free your mind.
  76. Applets are at stake here by DeadSea · · Score: 1
    Microsoft managed to kill of Java applets. Without resorting to Java 1.0, it is nearly impossible to write a Java applet that will work in a variety of browsers. I would like to write an applet using the latest version of Java (1.4) and have it work in everybody's browser. There are several reasons why that doesn't happen:
    1. Microsoft does not distribute anything but Java 1.0, so Windows users must get a large download from Sun.
    2. Once you get the recent version of Java, the applet tag is still hijacked by the old microsoft version of Java.
    3. The object tag is recommended as a replacement for the applet tag because you can specify which vm you want to run the applet. Unfortunatly different browsers want different parameters. IE wants some got awful random string of number for the classid, where Netscape wants something in the format "java:myclass.class".
    4. There are ways to nest platform specific object tags (or object and embed tags) so that it will work in both Netscape (Mozilla) and IE, however, these tricks are hackish and don't seem to carry over to Macintosh versions of IE or other Macintosh browsers.
    Although I program primarily in Java, I hadn't written an applet in years. The other day, I decided to try to get my Random Password Generator to work as an applet. It works in Windows IE and Linux Mozilla.

    If windows starts coming with a recent version of Java, perhaps the applet tag will become useful again.

    Other than applets, the death of Java is greatly exaggerated.

  77. Re:Java hype by Anonymous Coward · · Score: 0

    Read the EJB specs

    Or this:
    http://www.softwarereality.com/programming/ejb/i nd ex.jsp

  78. Re:Java hype by znaps · · Score: 4, Insightful
    What exactly is there in Java that allows one to build "complex applications"?

    Are you kidding? How about an extensive, reliable, tested library of networking, user interface, and I/O code which can be used to create "complex applications" extremely easily.

    I look at their code and it appears to me like they don't know how to use a relational database, so they spend a bunch of code on reinventing indexing, joining, multi-user contentent management, persistence, searching, sorting, etc

    I can't comment on your colleague's coding standards and style, but it appears that they may have been coding cross platform JDBC code, using only simple DB features so that they could switch databases easily. I know it's not unusual to develop initially using something like Apache/Tomcat and MySql, then switch to 3rd party commercial app servers and databases. Anyway, a criticism of their code cannot be taken as a criticism of the language. The fact that you can replace these DB functions in Java code makes it even more flexible.

  79. C# compiles to Java by absurdhero · · Score: 1

    DotGNU Portable.NET can compile C# code to Java. The libraries are lacking, but more support is in the works.

  80. Re:Not really feasable -- the big lie. by Anonymous Coward · · Score: 0

    The issue with the CLR and multiple languages is that
    it doesn't really run other languages. It runs "modified"
    varients of the languages. As any VBer if VB.net is the
    same as VB. Or if they can just pick up their old programs
    and run them on .net.

    Miguel talks about preserving your code investment but
    fails to mention that all that fancy C++ you have will have
    to be rewirtten in order to run on the CLR.

  81. eiffel by strombrg · · Score: 1
    Smarteiffel (formerly smalleiffel) can compile to jvm.

    I believe jvm isn't a good fit for some languages, but it does appear to work out for higher level stuff like eiffel and (the already mentioned) python (jython).

  82. Re:Java hype by rodgerd · · Score: 1
    Are you kidding? How about an extensive, reliable, tested library of networking, user interface, and I/O code which can be used to create "complex applications" extremely easily.

    Sounds like Perl to me.
  83. Re:My preference by Sibshops · · Score: 0

    I guess conservatives are not good at blaming others (countries) for their problems.

  84. Re:Java hype by cyranoVR · · Score: 2, Insightful

    What exactly is there in Java that allows one to build "complex applications"?

    What is there in Java that DOESN'T allow one to build complex applications? Based on the thousands of commerical web sites now using server-side java, I think it is fair to argue there is more evidence for than against.

    I look at their code and it appears to me like they don't know how to use a relational database...[yadda]

    Ok, now you are confusing bad developers with the language that they are using? If you are a sucky programmer I doesn't matter if you are programming in xBase or Java, you will still suck. But that doesn't mean the language itself is the problem.

    Show me some objective evidence that Java is superior, not brochure cliches.

    How about some objective evidence (i.e. not from microsoft) that it is not? Meanwhile, Oracle, IBM and thousands of developers are throwing their weight behind Java.

    They yanked some dynamic typing features from VB, for example, because they were not "Javish" enough.

    Did you just imply that VB is somehow a better language than Java? Where to start...well, I'll let somebody else weigh in on that gem. Man, now I really can see where your rep as a troll came from.

    Troll, poster, troll!

  85. Re:Java hype by Tablizer · · Score: 1

    Are you kidding? How about an extensive, reliable, tested library of networking, user interface, and I/O code which can be used to create "complex applications" extremely easily.

    Perl, common-LISP, Python, Smalltalk, etc. have extensive libraries also. Java API's are a mess IMO. You don't want to get into a my-lib-is-bigger-than-yours battle with them.

    The fact that you can replace these DB functions in Java code makes it even more flexible.

    If you can swap out DB operations, then you are probably not using the DB to its full potential, but as a mere filing system. If the only solution to swappability is reinventing a database, then please reinvent a relational database instead of a network database.

  86. That Adahome page is quite out of date by Anonymous Coward · · Score: 1, Informative
    Ada has a bytecode generator. See here [adahome.com]

    The GNAT (open source) Java bytecode version was in fact released, but then support was subsequently dropped for lack of paying (for support) customers. I have not heard of the Aonix and AdaMagic (both based on AdaMagic) versions being dropped.

    As to whether your Ada training would become useful, the full Ada language is not available under the Java Virtual Machine, only the subset of capabilities that are also supported by the JVM itself. So yes, your Ada training would be useful, in understanding the limitations of the JVM environment !

  87. ADA by sckienle · · Score: 1

    I'm not sure if it is still available, but one of my college friends worked at an ADA compiler company which had a product which compiled ADA to the JVM.

    --
    I don't see things in black and white; I see the gray. Heck, I actually see in color, which makes things more difficult
  88. Java has it's place, but it has problems by jamieo · · Score: 3, Interesting


    Java has it's place, but if you come across someone with the opinion that Java is the be all and end all, avoid them.

    The very best thing about Java is the marketing hype Sun have managed to create. It's only Mac-o-philes who seem to be more obcessed (a Mac-Java geek is something to behold!).

    Java's a decent clean OO language, it's got a good set of standard/accessible powerful libraries, it's handling of libraries is good (compared to say C/C++), it's simple to learn the language basics and the GUI toolkit (swing) is reasonable.

    However for me Java has not delivered on it's promises. Performance generally is poor, compared to say Perl, and is dire when compared to C.

    Java also failed to deliver it's platform independence - you just get so many problems running on different platforms and different VMs. Compare this to say Perl - if you avoid platform specifics, Perl just works. Even compare to C when using a library to abstract platform independence (e.g. things like in Gnome/Gtk or Qt), it's not so hard and at least the mistakes are usually yours. I know it's not the fault of Java as a language, but if it can't be implemented well, it won't be much good.

    The final major reason Java has not delivered is because it's not made programming any easier or error prone - and much has been made of this promise. Yes, gc does save some bugs (it does cause some more, but on the whole it's good). Java does not save you from uneducated developers or people who simply suck as a programmer. I've seen some steaming piles of turds writted in Java by people who really should be better. This can be said of any language, but much was made about Java being a language to make people make less mistakes - they just make different ones.

    So use Java with your eyes wide open, it's decent, good in some areas, weak in others and eventually you'll move on to the Next Big Thing TM.

    Jamie

    1. Re:Java has it's place, but it has problems by JohnnyCannuk · · Score: 4, Insightful

      However for me Java has not delivered on it's promises. Performance generally is poor, compared to say Perl, and is dire when compared to C.

      FUD, FUD and more FUD.

      Starting with the jdk1.3.1_x series Java has been pretty peppy. JDK 1.4.1_x is downright speedy. Do a google search. On the server, Java is very fast and even some Swing apps can beat native code. Java in 1998 was slow. Java today is not. Get over it and stop living in the past.

      Java also failed to deliver it's platform independence - you just get so many problems running on different platforms and different VMs. Compare this to say Perl - if you avoid platform specifics, Perl just works. Even compare to C when using a library to abstract platform independence (e.g. things like in Gnome/Gtk or Qt), it's not so hard and at least the mistakes are usually yours. I know it's not the fault of Java as a language, but if it can't be implemented well, it won't be much good.

      Well I don't know what your experience is but I have never run into any issues with Java being cross-platform. I have literaly just finished doing some bug fixes to a J2EE app for one of our clients. I develop on Win2K, test deploy on Solaris (Sparc) and will deploy it tommorow on HP-UX. All I do is redeploy the .ear file...no compiling involved. Any issues I have ever run into have been when the have code makes JNI calls or when environmental differences in the OS are not taken into account during a JDK install (think .so vs .sa). Sometimes poor programming, like hard coding "/" vs "\" in path names, but that is hardly the fault of the language. Even with a few warts, the fact still remains that I cannot compile C or C++ on a linus box and just run it on Windows box. With Java I can.

      The final major reason Java has not delivered is because it's not made programming any easier or error prone - and much has been made of this promise. Yes, gc does save some bugs (it does cause some more, but on the whole it's good). Java does not save you from uneducated developers or people who simply suck as a programmer. I've seen some steaming piles of turds writted in Java by people who really should be better. This can be said of any language, but much was made about Java being a language to make people make less mistakes - they just make different ones.

      I guess this is a matter of degrees isn't it. No Java isn't perfect. But it's a darn site easier to learn and maintain than other, more obfuscated languages like Perl. Java is a language that let's you make less fatal mistakes. No buffer overflows, no pointers, strict type checking and casting rules as well as the Java sandbox go a long way in protecting a system running Java. Can the same be said about C? So even if I'm a bad java programmer, I can't be bad enough to cause the OS to crash or to introduce a system level vunerablility. C give you the freedom to do anything...kinda like giving you enough rope to hang yourself (and two of your friends sometimes).

      Despite all that, use the Right Tool for the Job. If that is Java, use it. If it's C (and you can use it right) use it.

      But please don't go spreading half-truths and crap to get moderated up.

      --
      Never by hatred has hatred been appeased, only by kindness - the Buddha
    2. Re:Java has it's place, but it has problems by pyrrho · · Score: 1

      >This can be said of any language, but much was made about Java being a language to make people make less mistakes - they just make different ones.

      yes, and the bugs just get more surreal. Or worse, their solutions lie inside an impenitrable VM.

      and I can't help but tease you about this typo... spoken like a true C/C++ lover (comrade!)

      >Java has not delivered is because it's not made programming any easier or error prone

      Yes... any good language should make programming more error prone, because if it doesn't kill you, it shall make you stronger....

      --

      -pyrrho

    3. Re:Java has it's place, but it has problems by johnnnyboy · · Score: 1

      Starting with the jdk1.3.1_x series Java has been pretty peppy. JDK 1.4.1_x is downright speedy. Do a google search. On the server, Java is very fast and even some Swing apps can beat native code. Java in 1998 was slow. Java today is not. Get over it and stop living in the past

      I'm sorry but I disagree. Java 1.4.1 is an improvement but I don't know where you get this idea that swing apps can beat native code. Java is still slow today as it was yesterday. Computers just got faster.

      --
      "If a show of teeth is not enough, bite ... but bite hard!"
    4. Re:Java has it's place, but it has problems by jamieo · · Score: 1


      FUD, FUD and more FUD.

      Starting with the jdk1.3.1_x series Java has been pretty peppy. JDK 1.4.1_x is downright speedy. Do a google search. On the server, Java is very fast and even some Swing apps can beat native code. Java in 1998 was slow. Java today is not. Get over it and stop living in the past.


      It's not FUD at all, it's fact, fact, fact.

      Java is fast, just not as fast as it should be and certainly not as fast as the competition (C/C++, Perl, PHP, etc.). You would never choose Java for performance reasons, you choose it for other reasons.


      Well I don't know what your experience is but I have never run into any issues with Java being cross-platform. I have literaly just finished doing some bug fixes to a J2EE app for one of our clients. I develop on Win2K, test deploy on Solaris (Sparc) and will deploy it tommorow on HP-UX. All I do is redeploy the .ear file...no compiling involved.


      Well let me qualify myself. I'm a principal engineer for a company that produces a top line Java IDE - it could well be the one you use. It's pure Java, great expertise has gone into not having platform specific codeing problems, and we target many platforms. I can tell you for sure that running on different VMs on different platforms is NOT just an out of the box experience. There are many problems and many flaws and this means you need to do the exact same test coverage on every platform, and every VM you target. There is no significant cost reduction using Java for cross platform work because of this.


      No Java isn't perfect. But it's a darn site easier to learn and maintain than other, more obfuscated languages like Perl. Java is a language that let's you make less fatal mistakes. No buffer overflows, no pointers, strict type checking and casting rules as well as the Java sandbox go a long way in protecting a system running Java. Can the same be said about C? So even if I'm a bad java programmer, I can't be bad enough to cause the OS to crash or to introduce a system level vunerablility.


      Java is easier to learn the language - but it does not make programming easier and that is the really important thing. Being a good programmer is very different to knowing a language, there's a lot of skill in writing well performing, maintainable code in a reasonable period of time. This mostly comes from experience and it's nothing to do with the language you use.

      When Java first came on the scene it was touted - by both marketroids and programmers - as making programming easier, less error prone and faster. In some areas it has made things easier, in others not, but you still need a good programmer to write good code.


      But please don't go spreading half-truths and crap to get moderated up.


      These are no half truths, it's the cold light of day and that is Java is just another language and that's all there is to it.

      Jamie

    5. Re:Java has it's place, but it has problems by Anonymous Coward · · Score: 0

      I have tested Java against Perl for PARSING files and Java was faster (this was with IBM JDK 1.1.8) for everything apart from opening/closing files (and there wasn't that much of a difference unless you are opening/closing 10.000 files).

      Java isn't the fastes language around but it's not the slowest by any chance.

  89. Languages by Anonymous Coward · · Score: 0

    Every Java developer knows about http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.ht ml. Sadly it is just the java developers who know about it. In the marketing world, the CLR supports any language (even Java, which is the funniest :) and the JVM "does" only Java.

    Also, IMHO .Net supports only one existing language. C# is a new language, which you have to learn. VB.Net is not VB, the VB guys have a lot to learn, same for Cobol.Net - but all this talk yields to nothing, because the MS marketing guys rock - they know how to talk and how to position a product. Most others do not. And in the end, they have the most influence!

  90. Re:Java hype by Tablizer · · Score: 1

    What is there in Java that DOESN'T allow one to build complex applications?

    I am NOT saying that Java does not outright run, I am just saying that the hype is unjustified. It is just another language among thousands. Nothing special other than the hype.

    How about some objective evidence (i.e. not from microsoft) that it is not?

    Language benefits are equal, unknown, or subjective until proven otherwise. The burden of evidence is on Java fans, not me.

    Meanwhile, Oracle, IBM and thousands of developers are throwing their weight behind Java.

    Because of its hype it is the only thing they can see that can kill Microsoft. The "popularity metric" is not very meritous. Otherwise OS/2 and Amiga would still be alive (in some form).

    Did you just imply that VB is somehow a better language than Java?

    No, I did not. I was only demonstrating how OO hype has resulted in good features being *removed* just to "match" Java.

    (Although VB is one of the few mainstream languages that can/could straddle the line between static and dynamic typing. I have to give it credit for that. Plus, it does not have that archaic semi-colon that we can't seem to get rid of.)

    Troll, poster, troll!

    Sun is a Java Troll; the biggest IT troll since MS. Didn't Scott McNilley (sp?) once say, "I don't see why anybody would use any language besides Java." If that ain't a troll, than nothing is.

  91. Multiple languages, good or bad? by kronin · · Score: 4, Insightful

    I realize that each language has its strengths and weaknesses, but bear with me for a moment. You get hired at a new job, where you inherit a .NET application. As far as anyone knows, it's C#. When you start looking at it further, you realize that it is actually made up of half a dozen languages, all of which you'll have to know at least remotely before you can understand the whole thing. Is this necessarily a _good_ thing? I don't think so. The argument Microsoft uses is "everyone can use what they know, and are most productive in". That's all well and good until those people leave.

  92. Re:Java hype by znaps · · Score: 1

    Sure, other languages have great libraries, and they are great languages too. My point was in response to your comment "What exactly is there in Java that allows one to build "complex applications?".

  93. Re:Java hype by Malc · · Score: 1

    It sounds to me like you have a grudge against Java, or perhaps a strong resistance against new or different things (which isn't always bad). You've heard a lot, but it doesn't sound like you have any real experience.

    So what if all the Java people you've encountered have re-invented the wheel? I know a lot of people who do that in every other language I've encountered. It doesn't say anything about the language, but rather that there are a lot of bad programmers out there.

    As for the lack of functions: who cares? That doesn't seem to get in the way. Personally I like creating a utility class with static member functions. It essentially behaves the same as putting global functions in a namespace in C++, which is what people should be doing in that language but rarely do as they're not forced to. Doing it this way for example makes it a lot easier to find the functions without having to resort to grep.

    For me, one of the strengths of Java is the huge class library that comes with it. Ever tried cross-platform code in C or C++? The STL is a huge bonus in C++, yet there are still huge deficies that require knowledge of numerous third party libraries, e.g. threading, network I/O, GUI, distributed components, etc.

  94. The MaVerick DBMS compiles BASIC into JBC by SpamapS · · Score: 1
    The MaVerick DBMS is a system to replace Multi-Value DBMS's such as This one. These systems used to be what SQL based systems are today. In fact, until just a couple of years ago, Dell ran their entire operations on one.

    MaVerickDBMS compiles the legacy BASIC code from these systems into Java Byte Code. This code is not the traditional "10 PRINT HELLO" BASIC. Nor is it like VisualBasic. It is a very simple, and powerful data-oriented language.

    --
    SpamapS -- Undernet #Linuxhelp
  95. If your only tool is a hammer... by Anonymous Coward · · Score: 0
    In reality, most OO languages or languages that can support an OO paradigm can be compiled into JVM byte code.

    So why is the Ada that can be compiled to JVM (by either translator) a subset of the full Ada language ?

    Ideally, they would like to hire only Java or only C# developers and have those developers be able to manage all of their code.

    And how many operating systems other than Windows have C# ?

  96. Re:Java hype by Anonymous Coward · · Score: 0

    Plus, it does not have that archaic semi-colon that we can't seem to get rid of.)

    VB also has a superior case/switch statement.

    Give credit where credit is due. Even if you hate VB, you have to admit that it has some nice features that Java creators ignored.

  97. Re:Java hype by The+Wookie · · Score: 5, Insightful

    I doubt that this qualifies as objective since it is my personal opinion, but I hope it isn't cliche-ridden.

    There are several features of Java that I really miss when I have to code in C or C++:

    Class.forName

    To dynamically load a class, I just do Class.forName(classname). Combined with the Factory pattern, this makes it much easier to create pluggable implementations. You can still do that in C++, it's just harder.

    exception.printStackTrace()

    C++ has exceptions, but you can't get a stack trace on-the-fly from one. In a Java program, I can handle exceptions and log them to a database for later debugging. That makes it easier to find bugs.
    Also, Java lets you know when you have the potential for unhandled exceptions (some people hate that, too, but I like it).

    Built-in thread awareness
    This one is probably closer to laziness, but I like being able to declare a method or block of code as synchronized, which is essentially the same as protecting it with a mutex. Using something like QMutex in C++ isn't really too much extra work.

    Array bounds checking

    This is another that C++ can do, but you have to do extra work for it. There are plenty of times when a Java program runs off the end of an array. Instead of giving me a core dump and killing the program (if I'm lucky), I get a nice little exception that I can handle. The same goes for referencing a null pointer (reference).

    Garbage Collection

    Okay, it's a blessing and a curse. On one hand, I don't have to worry about keeping track of references. On the other hand, you still get memory leaks, and your Java programs consume a lot more memory. Still, I really miss it when I start having to write destructors and copy constructors. In a large system, it is more difficult to keep track of who is supposed to free what memory. You end up using reference-counted pointers, which solve a lot of problems, but not all of them.

    Reflection

    I don't use reflection very often when writing business logic, but it comes in handy for writing frameworks. It is great to be able to dynamically access methods and fields at runtime (you locate the method/field by name, so it doesn't have to be known at compile time). Many of the networking and database frameworks use reflection to keep you from having to write tons of custom methods just to support the framework.

    The libraries

    Java has a great set of libraries that come with the standard JRE/JDK. While you can find the equivalent libraries for other languages, with Java you don't have to go searching as much. Plus, you know they're going to work when you move the application from platform to platform.

    Java isn't perfect, the runtime is huge, the programs take a good bit of memory, swing still seems clunky to me, but when I have to do a large server application, I'd much rather be coding it in Java than C++.

  98. Re:Java hype by Anonymous Coward · · Score: 0

    YBT

    Tablizer thinks everything should be a relational database and has a serious hair across his ass when it comes to Java.

  99. Re:Java hype by Arkham · · Score: 4, Insightful

    Show me some objective evidence that Java is superior, not brochure cliches.

    There's not going to be objective evidence of a subjective comment. "Superior" is ultimately a matter of opinion. I personally think python is the "superior" language of all those I have tried, but that's my opinion.

    What I can say conclusively is that a programmer of equal skill in C++ and Java can write the same program in less lines of Java code. Java does lots of stuff "for free" that gets the job done faster, like memory allocation and garbage collection, and handling pointers transparently. If your goal is a good application written quickly, Java may very well be "superior" for your needs.

    Another advantage of Java over other languages (except Perl and Python) is the huge and wonderful library of methods and classes. You can accomplish these goals with C or C++, but generally you have to go out and find the libraries to do what you want, then compile them for your particular platform. Java generally includes them, and for those that are not included, they're distributed pre-compiled for the JVM.

    So it's not fair to say Java is "Superior", because that really depends on what you're looking for. If you're looking to build enterprise web applications, Java is likely superior. If you're looking to crunch numbers as fast as possible, you're likely to be happier with C or C++. It depends on the project and the goals.

    --
    - Vincit qui patitur.
  100. Re:OSDN Moves to Acquire Goatse.cx! by Anonymous Coward · · Score: 0

    come on! if there was a post in this story that deserves +1 funny, this would be it!

  101. Relaxing work by Anonymous Coward · · Score: 0

    does this mean I can find Java development work again.

    programming Java is like a walk in the park, without the hair pulling.

  102. Re:Java hype by FortKnox · · Score: 1

    That's about EJB1.0. Now 1.1 is out if you like to write out your EJBs for complex situations (heavy stored procedure usage, etc...) and 2.0 is promising (I haven't used it a lot, yet, but where I have, I've been impressed).

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  103. A few clarifications by JustAnotherReader · · Score: 1
    But he says that those extensions were put in to improve Java on Windows, not to pollute Java. "What they liked about Java was that it was easier to write applications in it. They liked it better as a programming language. And so they said, 'Let's make Java a good way to write a Windows application.' And of all the stuff that's been said of what Microsoft did to Java, it's good to point out that they did make a better version of Java.

    This is typical Microsoft FUD. It completly ignores the fact that by licensing the right to build a JVM Microsoft had agreed to essentially 2 things: "Implement all of the JVM spec", and "Don't implement anything more than the spec". The first rule insures that Java apps written on other OSs will run on Windows. The 2nd rule insures that Java apps written on Windows will run on other OSs.

    But many say that just because Java did fall flat on its face, and just because Microsoft pushed it a little here and there, one can't conclude that Microsoft deserves all the blame. Java, people point out, had a slow graphical interface and generally poor performance

    This has more to do with perpetuating an impression that was correct 4 years ago than actual truth today. Take, for example, the programming editor Jext. I use it every day. It's fast, it works great, and it looks and feels exactly the same on Windows as it does in Linux.

    On a recent programming challenge on coderforums.net a java program that randomized one million numbers and then sorted them ran faster than the same implementation in C.

    "There's a lot of people who say that Microsoft wanted to kill Java" because it was "write-once, run-anywhere," he says. "But really, people at Microsoft just thought that was a ridiculous notion, and they didn't pay any attention to it. They said, 'For technological reasons, we don't think write-once will work."

    More likely the truth is that "Write Once Run Anywhere" makes the operating system irrelevant. Imagine if people were able to buy a product with one CD that would run on Windows, Linux, Mac OS, IBM's AIX and Sun Solaris. People would be able to make a decision on what operating system to use based on the merits of the OS, not the availability of software.That is what scares the hell out of Microsoft.

  104. Re:Java hype by Anonymous Coward · · Score: 0

    There are several features of Java that I really miss when I have to code in C or C++:

    C/C++ suck also. The C/C++ family is the "modern assembler" language. It is fast, lets you get close to the hardware, but the tradeoff is lack of some "automatic" features like garbage collection and bounds/range checking.

  105. Re:Not really feasable -- the big lie. by Temporal · · Score: 1

    As I understand it, you have to use modified versions of the languages if you want to get "verifiable" bytecode... that is, bytecode which users can verify is safe to run even if they don't trust the source. This mainly means restriction of raw pointers and some other things. I'm pretty sure you can compile standard C++ to unverifiable CLR code... or, at least, it is technically possible.

  106. Re:Java hype by Tablizer · · Score: 1

    If you're looking to build enterprise web applications, Java is likely superior.

    What exactly is an "enterprise web application"? Large dynamic websites have been built with Perl and PHP.

    Please, somebody define "enterprise app". The best definition I can find is "an intranet/B-to-B application where PHB's spend a lot of money because they think that's what you do to build intranets/B-to-B apps."

    What I can say conclusively is that a programmer of equal skill in C++ and Java can write the same program in less lines of Java code.

    C++ is hardly the cream of the crop to compare with (except maybe for raw speed). "Java is better than C++" does not ring loudly to those who don't like C++ to begin with.

  107. Re:Java hype by lux55 · · Score: 2, Informative

    That's exactly what always turned me off from Java. There's one spot in the Sun Java book (Core Java Vol 2) I have that compares equivalent code between C, Perl, and of course Java. The code implements a proxy server. The C code is the longest, pretty ugly, but fast as hell I'm sure. The Perl code is the shortest, not very complex, and relies on a regular expression to parse the request. The Java code isn't much shorter than the C code, plus it's THICK code (you know how Java programs have variablesThatDescribeEveryLittleThingAboutThem). Of course, they sum it up with a quick little explanation of how the C code is too long, the Perl code they describe as "completely unreadable", and show the example of the one regular expression in the Perl code to back this up. They try to explain this line of code then add in parentheses "No, we didn't figure that out ourselves. Like everybody else, we copied it from another script."

    WTF is that? There was one -- ONLY ONE -- regular expression in the entire Perl script. But of course since the authors will be appealing to people they figure won't understand regular expressions yet, they can win them over by pointing out the ugliness of that one line.

    I nearly burnt the book after reading that one (I collect old books, so that expression doesn't come lightly to me). If you Java advocates want to win people over, you should start doing it on the merits of the language, not by bashing others. It just makes you look ignorant.

    I can code "enterprise" apps in lots of languages other than Java (and no, they aren't C#, C#, and C#). It comes down to the right tool for the job, and each language has merit. That's why Perl isn't far behind Java, and C is still popular today, so many years later.

  108. Eclipse and Jet look promising on the client side by PRR · · Score: 1

    While many have their doubts about Swing and the notion of JIT compiled bytecode being a memory hog and a bit sluggish on the client side, there's some good stuff being developed:

    The Eclipse project is working with the SWT which uses the native widgets of the host operating system, to provide a good responsive GUI

    http://www.eclipse.org/

    Companies like Excelsior are producing native compilers which speed things up (and reduce memory consumption) even morseo. JET also supports SWT, giving native compilation combined with the host OS native widgets. In some cases, you don't even need the JRE for your compiled Java apps!

    http://www.excelsior-usa.com/jet.html

  109. too late....c# took over by Anonymous Coward · · Score: 0

    its unfortunate in a way, but i'm convinced that c# is the new java and it is indeed too late for java. Also, its interesting to note that even though we could write a compiler for any language that put it into java byte code (and indeed some have done it), we have to give microsoft some credit because they actually DID this for a number of languages for their .net framework. This coupled with the amazing visual studio .net will make the .net framework and c# the standard in the forseable future I think.

    Its sort of a shame to see Microsoft come out on top for this one, since they didn't exactly play nice with java.

  110. Correction: MS-XML based by Anonymous Coward · · Score: 0

    Hardly the same thing.

    [Cite]: Office 11's file format

  111. Re:Java hype by Tablizer · · Score: 1

    For me, one of the strengths of Java is the huge class library that comes with it. Ever tried cross-platform code in C or C++?

    Java is hardly "cross platform". IBM is trying to overhaul the GUI so that Windows users get decent performance/behavior. If you ingore the GUI, then there are many languages that run the same on lots of platforms.

    The GUI library/engine should NOT be language-specific anyhow. Why should we have to pick one particular language to get cross-platform GUI's? GUI != Language.

  112. Miguel missing the point? by Rinikusu · · Score: 4, Interesting

    I know I'm probably missing his, but here's how I view his decision to go with .Net/C#:

    MS made the "important stuff" standardized and "open." It still leaves MS in the position to close off the rest of the "non-important" stuff and that could break compatability. If you're looking for "cross-platform" advantages, .NET and it's VM are dependent upon MS's decision to release a VM. Yeah, you could write your own, but what if MS invokes the DMCA and prevents you from implementing a "full" VM due to patents and the like? Then you're screwed, writing applications that run on a perceived "broken" VM that lacks those things that MS has deemed fit enough to lock in. "Yeah, great, OpenSource to the rescue, we'll port our VM to every platform!" Sure, and getting people to use it? Good luck. Tell Joe IT Manager that he can use a "free, OpenSource VM" from a bunch of anonymous guys on the internet or the "official VM" from MS, what's he gonna pick?

    And that leads us to:
    The key is to ultimately remove the dependence upon MS products. We've all stated that time and time again. People run MS for Outlook. For Exchange. For a relatively easy sytem to administrate and patch. For Support. There's a million and one papers, editorials, /. comments, etc that do a good job of explaining all of that, but imagine this:

    What if Evolution had been written in Java? OpenOffice, if I'm not mistaken, is written in Java and if I must say so myself, it runs VERY nicely on my machine and does everything I need it to do as an Office Productivity Suite. With OpenOffice, you see lots of people switching from MS Office, avoiding the licensing fees and troubles, and generally LIKING it (there are exceptions.. there needs to be a nice Access competitor or at least a great frontend for something like PostGRE or the like). That's one less reason to use MS, right? Great! OpenOffice runs on Windows, Sun, Linux, OS X (with X11 installed). Most importantly, see Windows? Millions of people can now look forward to using that $500 they'd spend on Office to doing SOMETHING ELSE with their money. Millions of companies can still do business without outlaying a chunk of cash for Office. There's the example.

    Now, back to Evolution. If Evolution had been written in Java, like OpenOffice, you wouldn't just have people on *NIX platforms using it. No, you'd be able to use it on Windows, the biggest, most important, and most influential marketplace in the computer industry. What would that mean? Let's say you're Joe IT Manager. You've already switched your desktops to OpenOffice. Now, you could replace Outlook with Evolution, on your Windows systems at work (and saving on the licensing, to boot!). See, it's hard to convince upper management to switch to Linux whole-hogged. But if you do it, one app at a time, eventually you run OUT Of reasons to continue to pay the exorbitant licensing fees to support an Operating System that you no longer need to run the apps you run. Dig it? Dig it! Your users use the new apps, already acclimated to them. Change comes slowly, and for the better. And all that time Ximian spent on working on MONO could have been spent tweaking the interface, developing advanced calendaring functions, developing server-side calendaring/schedule making software, etc. And then Linux slips in quietly through the back door and MS is left to send armies of marketdroids to help woo the companies back, losing their marketshare inch by inch.

    I may have Ximian's and Miguel's intentions completely wrong. Linux "desktop" penetration may not be his ultimate goal, although as a Linux vendor it might behoove him to think this way. Linux is inching it's way into the server rooms of corporate America (and the world), and the desktops will be a hard fought battle. Java is the kind of technology that allows you to provide the replacements that will make the transition EASIER.

    To conclude, I applaud Miguel for his hard work on MONO (and Evolution, it does fucking kick-ass). Unfortunately, I think it's misguided and ultimately futile.

    --
    If you were me, you'd be good lookin'. - six string samurai
    1. Re:Miguel missing the point? by EatAtJoes · · Score: 1

      I think Evolution has a stronger selling point: it demonstrates a superior desktop experience on Linux. Sure, having it on windows would get my CEO to switch, but I'd rather encourage switching the whole OS.

      Meanwhile, with regard to it's development, I hate to say it but the insanely fast indexing Evo does would, in my opinion, suffer in java. I'm a java developer and love the language, but for some things it's too damn slow.

      For my part, I wish Evolution wasn't so tightly bound with Gnome; AND I wish they would implement a console-based interface (a la mutt). Neither of those things seem to fit their marketing approach, unfortunately.

    2. Re:Miguel missing the point? by elflord · · Score: 2, Insightful
      I know I'm probably missing his,

      Yes, you are.

      MS made the "important stuff" standardized and "open." It still leaves MS in the position to close off the rest of the "non-important" stuff and that could break compatability.

      Yes, but so what ? Mono is not a "Microsoft emulation" or "Microsoft compatibility" suite. It's a development tool primarily for Linux, that takes advantage of a good technology.

      If you're looking for "cross-platform" advantages, .NET and it's VM are dependent upon MS's decision to release a VM.

      This is the premise most of your post is based on, and it's rong. The goal of Mono is not binary compatibility with the MS VM. The aim is to take advantage of a decent standard technology. Think of it more as something that is comparable to C or C++ , which are also standard technologies where implementations are proprietary, as opposed to java.

      Then you're screwed, writing applications that run on a perceived "broken" VM

      That's like saying that gcc is "broken" because Linux doesn't have MFC, Direct3D and (shudder) Win32.

      What if Evolution had been written in Java?

      It would suck.

      OpenOffice, if I'm not mistaken, is written in Java and

      You're mistaken. It's written in C++ for the most part. You should be attributing the portability to the portability of standard languages like C, C++, and C#, not the portability of java. Of course multi-platform development in C and C++ is nontrivial, but it's certainly not impossible either. The important thing is that there's a substantial standard core language, which makes it possible to abstract away most of the platform specific code.

    3. Re:Miguel missing the point? by Anonymous Coward · · Score: 0

      Why do you think non-clueless people such as Mitch Kapor decided to use python+wxwindows instead of Java to code a "outlook killer"? Python+wxwindows is likely to be easier to code, faster and require a smaller environment (5Mb can hold it all). Besides, I bet it's a lot more cross-platform.

    4. Re:Miguel missing the point? by raul · · Score: 1
      OpenOffice is written in C++. Like mozilla they were writting with cross-platform in mind. The only big opensource project that is done in Java is eclipse and it has some JNI(java native invocation a bridge between java and other native code) to speed up the GUI.


      I think swing is a very nice API but is still very slow(but i think it still has space to improve).

  113. VB source compiled to java byte code by Radical+Rad · · Score: 2, Informative
    A company called Halcyon Software used to be developing a VB to java byte code compiler called VBix. I had a beta of it at one time and it worked under Linux with a few quirks in the GUI but only with a certain version of jdk, Blackdown 1.1.6 if I remember correctly.

    Halcyon changed it evidently to a middleware which converts ASP to Java. I don't know why they dropped the VB compatible source compiler. I think it would have been a terrific product had they released it since all the VB coders would have been able to code on multiple platforms with no learning curve. It would have been a huge market for them too, so I would love to hear the real story behind their dropping it.

    They have since merged with a company called Stryon if anyone wants to check it out.

  114. Runtimes and Multiple Languages by Caoch93 · · Score: 2, Insightful

    Microsoft jumped on a rather interesting point in their new CLR environment- if the API is universal at the bytecode level, then you can build up many languages utilizing the API and compile them down into one common bytecode. This does offer many forms of interoperability between the languages, but the question of whether or not you really want to do that comes into play. This may just be my own myopic opinion, but it seems to me that that the multi-language promise of .NET has the same promise as that of the Tower of Babel...you're going to be able to get started just fine and build things beautifully for a while, until your effort is crushed by a confusing mess of different languages.

    This might have not been a really big deal if it were just VB, C#, and ASP, since they all share so many similarities, but add in "managed C++" and COBOL, and give all of these languages roughly equal footing to what they're capable of, and your development team is going to be in a position of coding anything they like in whatever language they want, and that's going to become a confusing mess to maintain.

    Now, before I say anything further- YES, I am a Java programmer. I also program in C, C++, and Perl, though...I just don't get paid to do those. I like Java, but I don't think it's the messiah of languages. I will say, however, that I like it because I find it easy to code in and that, in my personal experience, fewer people have wrecked my day with bad Java programming than with C or C++ programming, and that makes it a pleasant "headache free" language for me. Since it's so "headache free", and because I can do so much with it, I often default to using Java unless there's a reason to do otherwise.

    Now, since I've given what is probably my ignorant and unsolicited opinion on .NET and on multi-language runtimes, let me throw out another ignorant and unsolicited opinion. To put it shortly, I think that bytecode interpreting runtimes are really going to take over in the future of programming.

    If there's one thing I've forever loved in Java that I wished I had in native code languages, it was the ability to, without care of the implementation details of some remote system, load and bootstrap executable code from that system. C and C++ have dynamic resource loading capabilities, but I just don't find them as flexible as dynamic class loading in Java. I've looked at LAM and MPI and I've programmed in CORBA...all of these different technologies seem to have one thing in common to me- they struggle to put a common veneer over different machines so that they can be used together. I like MPI quite a bit, actually, but when I look at the ease with which I can create distributed services in JINI, the distributed options for native code languages just don't seem that great. The bytecode interpreting runtime (the JVM or the .NET CLR) is its own veneer over a machine's actual native operations, and so chunks of programs can be more easily exchanged, bootstrapped, and executed on disparite machines. From the heterogenity comes the power of very flexible dynamic loading of runnable code, and such a feature seems to me to be extremely important in creating distributed systems.

    Again, I'm not saying Java or .NET is going to take all or be all. Honestly, I'd like to see these two bow out in a few more years and make room for a runtime that picks up where they leave off, because they both leave things to be desired. Also, rock solid native code languages are still incredibly important...not only are they necessary when you need more raw machine access, but how else will everything that bytecode languages depend on be implemented? And, of course, scripting languages that allow for fast and effective programming will be perennial.

    But I think that the future of quite a bit of programming, especially a lot of business applications programming (which, at least in my experience, relies increasingly on distributed systems), is going to start going to virtual machines interpreting bytecodes.

    I'm sure I'll get flamed for this, so please have at it. ;)

  115. Re:Java hype by Tablizer · · Score: 0, Redundant

    Tablizer thinks everything should be a relational database.

    If true, how is that more evil than thinking everything should be in Java application code? Why is my everything-isa-X more evil than your everything-isa-Y?

    At least let the database do what it is good at: managing boat-loads of attributes and the relationships between them. Code sucks at that, at least for me. Code is too linear and static. Databases allow you to sort, filter, cross-reference, etc. all that info to more easily find and view what you need and only what you need. Sure, a fancy IDE can come close, but only by reinventing the database by making classes into an internal network database. Thus, you end up reinventing and/or using a database one way or another for larger apps. You might as well do it right rather than stumble upon a crippled version of it the hard way.

  116. Re:Java hype by Evil+Grinn · · Score: 2, Informative

    There are plenty of times when a Java program runs off the end of an array. Instead of giving me a core dump and killing the program (if I'm lucky), I get a nice little exception that I can handle.


    Really? Java makes it so easy to know the length of an array that I would think over-running it would be a relatively rare occurrence.

  117. ditto by ragnar · · Score: 1

    I'm a long time (meaning 7 years) Java programmer and I have recently been learning Objective-C and Cocoa. On a whim I decided to use the Java bridge and I was really impressed. I see it as a perfect solution for creating a slick desktop app on the Mac that can benefit from some Java-specific capability.

    --
    -- Solaris Central - http://w
  118. Re:Java hype by Tablizer · · Score: 1

    Sure, other languages have great libraries, and they are great languages too. My point was in response to your comment "What exactly is there in Java that allows one to build "complex applications?".

    Okay, let me reword it: How does Java allow one to build complex applications BETTER than all other languages? IOW, why the hype?

    What is so special about Java that is allowing it to be the New COBOL? Wait....I just answered my own question. Nevermind.

  119. Programming for the Java Virtual Machine by jfengel · · Score: 4, Informative
    I wrote a book on the subject of translating other languages into JVM bytecodes. It's called Programming for the Java Virtual Machine, from Addison-Wesley, and you can pick it up at Amazon

    So speaking as a nominal expert, while you certainly can translate non-Java languages into bytecodes, the machine clearly isn't designed to be general-use. It has a lot of object-oriented instructions that fit the Java object model and not a lot else. You can adapt them to your language, or you can ignore them and code everything up as one big method call (except that you'll run out of space, since function size is limited, and you can't modify it once written).

    I've successfully adapted languages like Prolog and Lisp, and taken advantage of Java objects to provide the continuation-like features of these languages. I've even found a couple of places where you can generate code which could not come from Java code but which is legal and verifiable (e.g. crossed loops).

    I use it mostly for small projects. For example, Ontology Works generates Java APIs for its custom database description languages. It generates the bytecodes directly, since the APIs are too large to be conveniently compiled from Java. But that's not a general-purpose language, so the code is actually fairly simple.

    I've only glanced at CLI, but it appears to be somewhat more general purpose than JVM bytecodes. (In the end it's all Turing tar pit.) However, CLI a bit more heavily oriented towards calling out to native code, which makes the code less portable and harder to optimize. The JVM also supports native methods, but they receive a lot less encouragement.

    Mostly, I'm a huge fan of the way JVM does verification. It's brilliant that you can restrict code to safe code and still be Turing complete by eliminating a large class of safe-but-invalid instruction sequences. You can make huge optimizations to verified code that you can't make to generalized code. Verification also allows much more fine-grained authorization than the Microsoft way, which is all based on signed code.

    You always want to choose the best language for the job. C/C++/Java are largely identical, and I think in general a group should pick one and stick to it. But there are languages (Lisp, Prolog, Haskell) which are genuinely different, and I consider it a good thing that you can write compilers for them. That has yet to completely fulfill its promise on the JVM platform, where there are proofs of the concept but they are little used.

    1. Re:Programming for the Java Virtual Machine by Phoukka · · Score: 1

      Well, you certainly seem like the person to ask, then, so I will: is there a cross-platform VM out there that IS really good? Would it be possible to build one? For that matter, would it be worth the effort?

      IMHO, the Java language is okay, but clunky. The libraries kick butt, but the real prizes are the JVM platform, and the coherency of direction provided by the JCP and the corporate buy-in to the JCP. I'd like to see the good parts of this available to the rest of the world. I'd like to see a great target VM available that is multi-platform. I'd like to see lots of easy-to-use, comprehensive libraries available for the VM, and those libraries should be callable from whatever language I write in, so long as the VM can handle it. I'd like to see industry buy-in and cooperation on defining the direction of the platform.

      From what I can tell from your post, you have intimate knowledge of the JVM and at least passing knowledge of the CLI, enough to compare. Can you tell us where to look for a really great VM? Or at least, can you point us in the right direction for specs on what that VM should be able to do?

      Honestly, my background is not computer science, and I suspect that this topic is something that gets taught at the grad-school level, but maybe it wouldn't hurt to get a little publicity on the topic and get others with better backgrounds thinking about it.

    2. Re:Programming for the Java Virtual Machine by jfengel · · Score: 1

      Unfortunately, you can't divorce the libraries from the rest of the VM when you want to talk about what makes a great VM.

      From a computational standpoint, the instruction set is just part of the Turing tar-pit. They're all the same; there's nothing you can do on one that you can't do on the other. Some are going to be oriented towards particular languages (like the Emacs bytecode for lisp, or the JVM for Java) or you can make it more general purpose.

      You could, for example, translate C for the JVM. Unfortunately, it would be a singularly unpleasant translation, because C's pointers would mean you can't use any of the native types. You'd have to emulate all of memory in a big byte array.

      So the question is, can you use the JVM to access the parts of the computer that aren't related to computation: the disks, the monitor, the network. I happen to really like Java's approach compared to Microsoft's, but that's largely a matter of taste.

      Universality is also really important. Although the JVM has been ported to a vast array of platforms, the fact is that by putting the CLR on on Windows, it'll have vast penetration. It'll also be easier to access. If you've ever tried to actually deliver a Java-based program, you know you have to deal with either deliver a 14-megabyte runtime system or trust that you can find the correct version of Java. The JVM changes very rarely (I can recall only one real change, in the area of floating-point ops), but the libraries change all the time.

      But you're probably really asking about the instruction set. It's clear from looking at the CLR that they knew the JVM, and knew what they liked and didn't like. It's a very Microsoftian approach: start with something good, add features to it that arguably make it better (but which some would argue just add bloat) and make sure it's everywhere, for free. It happened to Netscape, it happened to Stacker, and it could happen to Java.

      There are some odd things in the CLR instruction set. For example, the CLR has references to native values. That's certainly convenient for some things. Just yesterday I wanted to return two values from a function, and it would have been easier if I could just pass in a reference to an integer.

      But that's going to make it hard to optimize. The JVM JIT knows that if you have an int field of an object, the only way to change that value is to have access to the object. That's a huge boost to optimizer writers. If you can prove something doesn't change, you can sometimes eliminate huge swaths of code just by proving that they have no side effects.

      I found a kind of odd instruction called "tail", which allows you to turn method calls into gotos. Gotos are bad for software engineering, but they're really what goes on in the chip itself. A method call, at the most fundamental level, is moving a bunch of stuff onto a stack, including a reference to get back, and executing a goto. If you can prove that you don't really need to come back (because the method call is the last thing you're going to do) you can free up your local variables. You may even be able to inline the method call, which allows you to save the goto.

      (Gotos are bad at the JIT level, because they violate locality of reference. Locality of reference allows you to pre-load upcoming instructions, and maybe even start to execute them. Gotos aren't as bad for that as conditional gotos, but they still imply that you're jumping to a different block of code that you may not have cached. That can take on the order of 100 nanoseconds, which is forever given that on a modern CPU an instruction can take as little as 1 nanosecond. Even less if you take all the pipelining into account that lets you run dozens of instructions simultaneously.)

      The most obvious place where the CLR stole from the JVM is in verification. I'm sure that the JVM wasn't the first VM to enforce type guarantees on the stack, but it was a completely academic issue until Java put it on every computer in the world. The CLR uses the exact same concept, except that it's more complicated because the CLR has many extra features over the JVM.

      Not to mention that the CLR has an "out" designed to allow C code to be translated better than the system I described above. The upside to that is that it allows you to integrate old C programs more easily: you just recompile for the CLR and live with the fact that it's not safe anymore. On the JVM, you'd have to patch in JNI and that's a real pain in the ass. Plus it violates all the same safety guarantees, so you're just as screwed.

      That screwage applies to optimization as well. C allows you to optimize memory access brilliantly, but it makes it almost impossible for a JIT to ferret out your intentions and optimize. If you can't prove that a piece of code has no side effects, you can't eliminate it. Pointers make it nearly impossible to prove the absence of side effects; any piece of code could affect the memory of any other piece of code.

      So to finally get back to your question: which do I prefer? Microsoft did a great job of learning from the JVM's mistakes (or things they consider mistakes). I love the idea of Haskell for the CLR (I did a thesis on Haskell, and it's a hard langauge to love but I do anyway).

      I suppose to really answer the question I'd need to know one thing I haven't had a chance to investigate yet: how fast does the CLR run? MS has always been oriented towards performance over clean engineering. But premature optimization is the root of all evil, and there are a lot of people writing angry replies to this right now castigating me for claiming that Microsoft has any interest in performance. The problem is they do: they optimize early, and we're still living with the disasters of early optimizations. Remember 8.3? That saves you a bunch of disk space on 720k diskettes. Not so good on 120 gig hard drives.

      The JVM has almost 10 years worth of optimization, plus I've outlined some theoretical reasons why it should run faster in the limit case. But I don't have any performance comparisons at my fingertips.

      That may not make a difference, in the end. At 4 GHz, who cares about whether a machine is 10% slower? I learned to program on a computer literally 1,000 times slower. Today's usability has a lot to do with how much you want it to do. That computer couldn't handle a single window, nor could it antialias the text. I'd be pretty pissed off to be using that computer today. But at the time it did the job. A 10% performance boost wouldn't move Swing from "unacceptable" to "acceptable", and that's mostly outside the bounds of the JVM.

      I'm also curious to see how well the CLR will penetrate. Sun has fought to get the JVM on every computer. I don't think it will, even with Microsoft shipping it, because the Java library changes too often. I like the changes, love them, but I'm busily shifting code from 1.3 to 1.4, and I'll probably shift to 1.5 when it comes out, because I love the idea of polymorphic types. So it won't matter if Microsoft ships 1.4 on every system; if I use even a single 1.5 specific feature, I'm stuck delivering my own JVM. For me, that's not so bad: my current software takes up 100 megs. But my first delivered Java program was a fun crossword puzzle applet, and it takes 100K. You can't load that up with 14 megs of runtime to deliver it.

      In the end, despite their vast similarities, there's really no comparison between the JVM and the CLR. The differences will be manifest not in the instruction set but with the popularity with developers and the needs of companies to distribute actual, running code to actual, running computers. That will end up being more a political decision than a technical one.

  120. Typical by Anonymous Coward · · Score: 0

    Backing up your claim is a guy who repeatedly says his benchmark is "just for fun" and "a work in progress" and is humble enough to try and discover his own shortcomings:

    http://www.bagley.org/~doug/shootout/method.shtm l# flaws

    You can get benchmarks to prove anything, e.g. turn on fast floating point switch (completely unacceptable for some things) and sure, then Java's speed approaches C or Fortran. By the way, I couldn't find anything indicating what compiler switches this guy used (admittedly didn't look hard).

    1. Re:Typical by Temporal · · Score: 1

      Yes, I know. It's because he looks for his own shortcomings and because he is unbaised (not looking to prove anything in particular) that I think his results are more accurate than any other I've seen. He obviously wasn't trying to prove Java was fast. He was trying to get accurate results as much as he could.

      BTW, if you had looked harder, you would have seen that the only switches he used were "-classpath" and "-verbose".

  121. For Fast Cross Platform Development, Java Wins by GroundBounce · · Score: 3, Insightful

    Your point about speed of development is a very good one.

    I am currently developing a custom database and data collection package that MUST run both on Linux and Windows 2000. As well as the intrinsic functionality, it has a significant GUI component as well. Equally important, I don't have a lot of time to get it done. I considered many options, including C/C++ with QT, vxWindows, GTK and other "cross platform" toolkits, perl, and others. In the end, Java won the day for several reasons:

    1. Java plus Swing is the closest to truly cross platform of all of the options. I have written around 6000 lines of code so far and less than a dozen have to be changed to account for differences between Windows and Linux, even though the program does some relatively low-level things like directly accessing modems through serial ports. In addition, the Swing GUI looks EXACTLY the same on all platforms. GUI toolkits which try to give you "native" L&Fs often need tweaking between platforms to look good. Once you get a Swing GUI looking good on one platform, you're done.

    2. Java has an extremely complete and easy to use interface to SQL DBMSs (JDBC) which works the same on all platforms.

    3. Sun's online documentation is very complete and easy to use (this can be a big plus with speed is important).

    3. The higher level nature of Java compared to C/C++ (e.g., automatic memory management, better runtime checking) make for extremely quick debugging. I am achieving operational code with many fewer iterations than I ever did with C/C++. Java may be slightly slower than C++ because of these features, but this particular program is not pushing the performance envelope, so the faster development time is much more valuable.

    This is the first sizable project I have programmed in Java, and overall I'm very happy with the results so far. A year ago, that's something I'd never have guessed I'd be saying.

  122. Java.NET by ChrisWong · · Score: 1

    So what stops Sun or somebody else from doing a Java.NET?

  123. Re:Java hype by crazyphilman · · Score: 2, Insightful

    "Enterprise app" (My definition):

    An enterprise application is one with multiple components, geographically distributed, using multiple protocols and techniques to integrate the activities of a number of different people and/or departments.

    A good example would be an application in which clients can submit orders/requests via a web page, adding an order/request record to a database. This stage uses a web server, middleware, and a database server. The next stage is one in which an employee of one department interacts with the record using an intranet or client-server application. This stage could be repeated in several departments, like order intake, shipping, customer service, etc. Another stage is one in which whatever the client requested is actually delivered. This could be handled as part of the previous stage, or maybe be its own stage by involving an outside party like Fedex and personal handling of the order/request by a live person (a sales call, etc).

    So, in my view, the basic idea is that it's a company-wide system which involves a bunch of departments, potentially more than one database, clients, employees, and interested third parties.

    What do you think, guys? Is this a workable definition?

    --
    Farewell! It's been a fine buncha years!
  124. Re:Java hype by SlowMovingTarget · · Score: 5, Insightful

    Greetings Tablizer,

    I've read many of your posts here on Slashdot as well as your web site. I've found your arguments to be well-written. However, many of your arguments are as subjective as some of the posters here. You say in your own writings, in fact, that you have difficulty thinking about things as objects with behavior. And that, in my _opinion_, is what it's really about.

    Programming languages should be built for people, as they represent a communication channel between people and computers. Software texts often must account for communication to other humans, hence the need for comments.

    Experienced language designers take this into account. Their experience also leads them to add things to the language to prevent or at least deter common mistakes. Those "good features" in Visual Basic you mention, have produced a history of unreadable and buggy code.

    Where would you suggest today's application programmers spend their time? Is it more valuable, more marketable to learn a single OS / OE, a single database (and be a one-trick pony), or should they spend their time on learning a single, rich API that applies to multiple platforms?

    I'll make no pretenses that Java is more machine-efficient than C, or that O/R mapping is faster than embedded SQL. I will say that I find domain logic easier to unit test in isolation when you use an O-O domain model with mapping. These test can be automated and even serve as a kind of usage guide to the software.

    The point of this is, the Java language has an accepted and refined way to work at a reasonable level of abstraction. If machine-efficiency were always 'better' then we'd all use CPU specific assembly languages.

    BTW: The popularity metric does have merit as an argument. Popularity leads to communities. Communities can work together to advance the state of the practice, to share techniques. You complained about this very fact in your essays. 'Not enough people are contributing to the advancement of Procedural/Relational practice,' you said. I believe you are correct, and the reason for this is industry support and community.

    Regards,

    Michael Murphree

    The opinions expressed in this post are my own, and not necessarily those of my employer.

  125. It's called a CONTRACT by Anonymous Coward · · Score: 0

    in business, when one enters in to a contract, one is legally required to abide by its terms. The judge just made Microsoft do what they were already bound by contract to do. C# and .NET are just an attempt to further lock people in to Microsoft operating systems.

  126. Re:Java hype by Jord · · Score: 1
    Java is extremely cross platform, both on the server side and the client side. The client server application that my team is working on uses a Swing based client and runs great on every platform we have thrown against it! This includes Windows, Mac, Linux, Unix.

    Swing GUIs are as slow or as fast as you make them. As others have said, if you write crap code, then of course it is going to be slow! You can do the same thing in any other language. However, if you truly understand the Swing API and the Java language, you can write GUIs that are just as responsive as native applications.

    This was not always the case, but it is reality now. Unfortunately, it is going to take a few more years before the bulk of the Java programmers out there learn how to properly code a Swing GUI.

  127. Java speed by Anonymous Coward · · Score: 2, Interesting

    ...other programming languages still run relatively faster than Java...

    *sigh* Repeat after me: languages don't have speeds. You can write programs which run quickly in Java. You can write programs which run dog-slow in C.

    A well-written Swing program is plenty fast, and (in my experience) virtually indistinguishable from a "native" application once you get past around 500 MHz.

    Of course, most programs (Java or otherwise) aren't well-written. But don't blame the language because you can't use a profiler.

    1. Re:Java speed by nhavar · · Score: 1

      So then what you're really saying is that C programmers are better than Java programmers. :)

      --
      "Do not be swept up in the momentum of mediocrity." - anon
  128. something interesting by The+Creator · · Score: 2, Interesting

    When can we expect to see C# compile for JVM? And when can we expect to see Java compile for .NET?

    --

    FRA: STFU GTFO
    1. Re:something interesting by Raiford · · Score: 1
      And when can we expect to see Java compile for .NET?

      Now ! It's called J#.

      --
      "player 4 hit player 1 with 0 stroms"
  129. Re:Java hype by DavidNWelton · · Score: 1

    Are you kidding? How about an extensive, reliable, tested library of networking, user interface, and I/O code which can be used to create "complex applications" extremely easily.

    Tcl has had that for years. So does Python. Java has its good points, but they are buried under the piles of steaming 'hype', or to put it a different way:

    "It has been said that java is great for engineering next generation solutions to enable maximization of developer income by means of enhanced buzzword use"

  130. One Acronym: SWT by Anonymous Coward · · Score: 1

    Swing might be slow, but Swing is not your only option with Java. IBM recently introduced SWT (Standard Widget Tookit).

    http://www.eclipsecorner.org/articles/Article-SW T- Design-1/SWT-Design-1.html provides a brief introduction.

    SWT is definately faster than swing. Additionaly SWT is cross platform.

    I know it might sound unslashdotish but I prefer a graphical editor for building GUI's. There is currently not a free IDE that supports graphicaly editing SWT. I'm really hoping someone is working on one for Eclipse.

    While you're at it go ahead and check out Eclipse too, it's great. There are already all kinds of plugins available for it (UML generationg, etc. etc.) Java on the client side is real and picking up steam.

    (Insert Clever Sig)

    1. Re:One Acronym: SWT by fishdan · · Score: 1

      A good, free IDE is not a pipe dream!...Although I've found at the rate Borland and Visual Age crank out releases, you can get the trial versions, and go back and forth and never be using an illegal copy

      --
      Nothing great was ever achieved without enthusiasm
  131. Kawa: Scheme, XQuery, Emacs Lisp etc to bytecodes by Per+Bothner · · Score: 2, Informative

    I have been working on Kawa since 1996. Originally it just compiled Scheme to bytecodes, but it is now a multi-language framework supporting XQuery, Emacs Lisp, some Common Lisp and other languages. It is easy to compile any of those into modules, applications or servlets. These days I'm mostly working on XQuery, a very interesting and useful new language from the W3C.

  132. gcc IS under the GPL by MenTaLguY · · Score: 1

    gcc IS licensed under the GPL; programs compiled with it are not derivative works of the gcc code at all, except for small bits of inlined code -- and there is a specific excemption in the gcc license to allow that (as with most compilers; that's not a GPL-specific issue).

    Presumably a GPL-ed Java environment would do the same. The GPL really isn't as horrible as some people make it out to be.

    But, yeah, ECMA-Java would be a very, very very good thing.

    --

    DNA just wants to be free...
  133. Re:Java hype by znaps · · Score: 1

    It's not better in all ways than all other languages. I don't think anyone would argue that point (ok, maybe Scott McNeilly..but not James Gosling).

    The great thing about it is its extensive library, which alongside things like garbage collection and exception handling make it relatively simple to build a complex enterprise application, and by extension less expensive. I think mediocre coders (who will cost companies less) can build more robust apps in Java than other popular languages.

  134. JVM limitations by certsoft · · Score: 2, Informative
    One of the problems implementing other languages efficiently using the JVM involves support for smaller than 32 bit integers, as well as unsigned numbers.

    In my line of work I need to deal with binary data structures received over UDP/IP from DSP based systems. A lot of the data structures contain 16 bit signed and unsigned fields (it's a 16 bit DSP, so this is natural). These can be directly represented as records or structures in languages such as Delphi or C++, but a business associate using Java must use all sorts of tricks to access these fields.

    From my research on the CLI it seems to have instructions for 8, 16, as well as the common 32 bit accesses into arrays and structures, as well as the support for unsigned data as well as the common signed data.

    This may be one of the main reasons that Borland is coming out with Delphi and C++ compilers that produce CLI, whereas they never did so for JVM.

  135. FUD by ttfkam · · Score: 1

    You've been able to compile java to a static executable for years with most development environments. First there was Symantec, then Microsoft (who licensed Symantec's stuff)... IBM's Visual Age can do it. TowerJ is well known for their native compilation and speed.

    And now there's gcj.

    No native compilation indeed. Where have you been for the last five years?

    --

    - I don't need to go outside, my CRT tan'll do me just fine.
    1. Re:FUD by jazman_777 · · Score: 1
      No native compilation indeed. Where have you been for the last five years?

      Refining his shareware nag screen, no doubt.

      --
      Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    2. Re:FUD by kevlar · · Score: 1

      Try porting an app that uses Reflection using TowerJ.

      Visual Age and Symantic's junk hardly support 1.2+ Java

      GCJ can't even build all the core classes.

  136. Re:Java hype by cyranoVR · · Score: 1

    VB also has a superior case/switch statement.

    How do you code a case/switch statement in VB with "fall through." Yes, sometimes you actually need this!

  137. A Clear and complete answer ! by Anonymous Coward · · Score: 2, Interesting

    MS has always claim MS.net was language agnostic where Java was Java centric.

    This is nothing but a lie, several languages have been developped to compile to the Java platform (Java bytecode+JAva API) and one of the best was Eiffel ! It was done long time ago, ever years before MS decide to get rid of their Java VM (jview), Java Windows APIS (WFC) and JAva IDE (Visual J++) to start the famous project code named "cool" (now ".net").

    Of course Java language is the primary language of the Java platform just as C# is the primary language of MS.net. Take a look at VB.net and you soon notice that it is not only a cosmetic change over VB6 : 100+ new keywords, complete API changes, new full object (CLR related) philosophy,... VB.net is nothing but a new language shaped for the CLS and linked to the CLI ! In clear world, if you are not used to full object oriented design you could find trapped yourself soon or later !

    About alternative Java platform languages, see
    You can the whole list here !

    Most of them are like all the C# flavors to .net, ie languages with same design scope, ways of thingking etc ... but some are nothing to do with the way you thing in Java.

    One of the best is kiev, that add prolog rules which make an enormous change to the design rules (who said backtracking sx?). An other named OpenJava, has build a newt dynamicity level to compile language using the MOP (meta object protocol) that is the most impressive stuff ever brought.

    Ok, now you now that multiple languages are existing on both sides. But guess what ? I do thing that multiple languages are no a graal.

    Let me explain, if the languages are bijective (ie same scope, same stuffs), then there is no special reason you should consider using a language over an other. Let's take MS.net, all the languages are bijective (with exclusion on certain fonctionality usable only in C#), that means only one is usefull. Why should people have to learn 5 languages to read a project sources ? Why should enterprise invest in 5 languages training ? There are no reason at all ! This is the reason why MS know that C# will be the only surviving middle term language (why would you choose a language where less stuff can be done). The same thing apply to bijective Java languages !

    In clear words: C# is the only valid language for MS.net platform and Java language is the only valid language for Java platform !

    But point is that there are languages aimed at the JAva platform that are not bijective (OpenJava, Kiev). Because they add major features and new design concerns.

    Whatever MS claimed superioritty of .net over Java, i can just tell you this is wrong. The designer of .net just did a clone. And even if it has som small differences, who said a clone was a duplication ;)

    MS is worry and they do FUD, just because they've realized they trap themselves by doing a Java clone instead of continuing their leadership on the Java platform (remeber the 98' when both MS VMs and IDES where JAva leaders ?).

    If Java get to the client side then we could have a drastic shift of platform and this could endanger the client side domination of Win32 within the next 5 years !

    You could laugh at those statement, but the past year has prove that MS is now alone on pushing .net whereas other big buys push Java ... If they had to install the Java platform on Win32, then everywhere you will have Java, and whatever they wanted to, the fight will be over .... and MS.net dead-born ...

    Poor little MS :(

  138. poor workman by geekoid · · Score: 1

    "(although KDE3's stupid mouseover-activates-form-elements user interface, now finally fixed in the latest versions, has to take some blame too). "

    "It is a poor workman who blames his tools" ;)

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  139. Re:Java hype by Anonymous Coward · · Score: 0

    I can code "enterprise" apps in lots of languages other than Java

    What is exactly is an "enterprise app"?

  140. Re:Java hype by Anonymous Coward · · Score: 0

    Where you need a case statement, your design is telling you that you omitted a method.

  141. Speaking of Java by Anonymous Coward · · Score: 0

    Check out the heavily overlooked java bindings for KDE and Qt, they are very impressive and the programs resulting from it are very fast!

  142. Re:Java hype by Tablizer · · Score: 1

    However, many of your arguments are as subjective as some of the posters here.

    Indeed. Often hype is caused by people selling personal preferences as universal truths.

    But if it is all subjective, then why should the market pick your subjectivity over mine? Do some programming psychology research and surveys if you are going to use psychology to justify pushing certain subjective standards. Otherwise, fads and hype will be in the driver's seat.

    You say in your own writings, in fact, that you have difficulty thinking about things as objects with behavior.

    No, I don't think I said that. One can indeed model things like that, but it is not a realistic nor flexible model IMO (except maybe in physical modeling, where OO was born).

    The point of this is, the Java language has an accepted and refined way to work at a reasonable level of abstraction.

    I don't see that. What I see is a jillion methodologies. The task-in-code-and-nouns-in-DB organization of procedural/relational is both simple and powerful in my observation. BTW, abstraction is relative. Most philosophers will attest to that. OO tries too hard to find "global" abstractions, which is a dead-end endevour in the longer run (IOW, future maintenance headache). The ad-hoc abstractions of relational are better in this regard IMO.

    The popularity metric does have merit as an argument. Popularity leads to communities.

    AKA, the "QWERTY" argument: Keep inperfect standards because at least they are standards. This is why Java is becomming the new COBOL. COBOL was surrounded by superior languages, but none of them ever found the momentum to jump COBOL's entrenchment.

  143. Re:Java hype by lux55 · · Score: 1

    That's why we both put it in quotes. :)

  144. Re:Java hype by Arkham · · Score: 2, Insightful

    At my company, "nterprise" means supported software with automatic failover, guaranteed uptime, and linear scalability by adding more servers and CPUs.

    That means that session data has to be either shared or stored (which means the application servers have to be clustered), or you have to set the sticky bit on two cross-linked load balancers (which is not an option in many cases since Foundry Server Irons cost $30,000 apiece and you need two so the irons can fail over too).

    You can't do that with Perl or PHP as far as I know. Enterprise has nothing to do with size or features, it is all about consistent performance, uptime, and failover.

    --
    - Vincit qui patitur.
  145. Re:Java hype by Anonymous Coward · · Score: 0

    How do you code a case/switch statement in VB with "fall through." Yes, sometimes you actually need this!

    Show me an example. Note that in VB you can put *multiple* matches per case block. IOW, sets. Thus, rather than "fall through", you list the multi-item set. I don't know if it is faster, but it is better software engineering organization.

  146. Java is great for server-side programming. by buckinm · · Score: 1

    Now I may sound like an idiot for saying this, but java never made sense as a server-side language. It wasn't designed as a server-side language, it was designed as a client-side language. I've never really understood why people say "we use java on the server because it's write-once run-anywhere." It doesn't make sense: on a server you have complete control of the hardware so compiling to machine code is both possible and good for performance.

    I guess you've never had to support mulitple servers... Not every company uses one server for everything. Under one vp, they buy a Sun. The next one comes in, they buy an hp. Maybe somebody else brings in 3 Windows 2000 boxes... Do you really want to compile, test, and support your app in each environment?

    Anyway, I have a fairly large app (no gui) that I develop on NT, test on Linux, and run on Solaris, Linux, NT, and Windows 95. I don't have to do anything to make this work. It just works.

    --
    This isn't any ordinary darkness. It's advanced darkness.
  147. Re:Java hype by Anonymous Coward · · Score: 0

    Where you need a case statement, your design is telling you that you omitted a method.

    The 'ol "subtyping is better than case statement" argument. The argument is usually flawed. It assumes a certain regularity and never-growing method count that is only found in cliched OO books. Fairy tale examples.

  148. JPython by Lodragandraoidh · · Score: 1

    I haven't seen anyone mention JPython (basically python that generates java bytecode).

    --

    Lodragan Draoidh
    The more you explain it, the more I don't understand it. - Mark Twain
  149. JRuby by Anonymous Coward · · Score: 0

    http://jruby.sourceforge.net/

    JRuby is a pure Java implementation of the Ruby interpreter.

    JRuby is tightly integrated with Java to allow both to script any Java class and to embed the interpreter into any Java application.

  150. Re:Java hype by Tablizer · · Score: 0, Flamebait

    An enterprise application is one with multiple components, geographically distributed,

    If it is on the Internet, then why does it have to be *geographically* distributed? Just make one big-bass server room running things like Oracle somewhere in Denver. That way you don't have to duplicate similar configurations and setups all around the country (or world). (With off-site backups, of course).

    Smells like a conspiracy to sell duplicate Sun-boxen to me.

  151. One more thing... by SerpentMage · · Score: 1

    Sam Gentile wrote the following:

    http://www.ondotnet.com/pub/a/dotnet/2003/01/13/ in tromcpp.html

    What Exactly are Managed Extensions for C++?

    Managed Extensions for C++ are extensions to the Visual C++ compiler and language to allow them to create .NET code and enable access to the functionality of the .NET Framework. They include a set of Keywords and Attributes to extend the C++ language to work with, and generate, managed code.

    ******
    Therefore Managed C++ != C++

    --

    "You can't make a race horse of a pig"
    "No," said Samuel, "but you can make very fast pig"
  152. Re:Java hype by adamruck · · Score: 1

    Java has a great set of libraries that come with the standard JRE/JDK. While you can find the equivalent libraries for other languages, with Java you don't have to go searching as much. Plus, you know they're going to work when you move the application from platform to platform

    STL? Also theres tons of sites that distrubute libraries and code. Maybe you dont have to search for libraries in java.. if you are familar with them. But the same can be said for any language.

    The platform to platform point is a good one. That falls under the general advantage of java, not libraries though.

    --
    Selling software wont make you money, selling a service will.
  153. Re:Java hype by Tablizer · · Score: 1

    since Foundry Server Irons cost $30,000 apiece and you need two so the irons can fail over too). You can't do that with Perl or PHP as far as I know. Enterprise has nothing to do with size or features, it is all about consistent performance, uptime, and failover.

    In that case, use IBM mainframe technology. They still have the best uptime and failover records out there. (I don't know how easy/reliable it is to run Java on mainframes.)

  154. Re:Java hype by Anonymous Coward · · Score: 0

    Show that Java is better than C++ and get a "5" rating? Shows how fucked up slashdot moderators are.

  155. Re:Java hype by Zigg · · Score: 1

    Re regexes and the hype against Perl: it gets ironic when you learn that JDK1.4 ships with its own regex engine.

    Not that I care all that much for Perl, but regexes are probably the single most useful programming tool I've had the pleasure of dealing with. Anywhere.

  156. Re:Java hype by Evil+Grinn · · Score: 1

    If it is on the Internet, then why does it have to be *geographically* distributed? Just make one big-bass server room running things like Oracle somewhere in Denver. That way you don't have to duplicate similar configurations and setups all around the country (or world). (With off-site backups, of course).


    I think he means that the *clients* aren't all in the same building, on the same LAN.


    Smaller companies (and individual departments within larger companies) have traditionally been able to make do with solutions that require all the clients to be on the same LAN as the server. Think of an MS Access database on a Windows shared drive. Or a desktop application that directly talks to a database server. This kind of thing doesn't scale up to the needs of a huge corportation, and especially can't handle transactions between multiple different ones.

  157. Re:The Future of Java? Even Brighter!! by baldeep · · Score: 1

    If it's going to get bigger for phones, it's got to be faster. Have you ever tried to use one of these T68s? It takes 15 seconds to bring up the phone book.

  158. Re:Java hype by quasi_steller · · Score: 4, Informative
    The Wookie writes:
    This is another that C++ can do, but you have to do extra work for it. There are plenty of times when a Java program runs off the end of an array. Instead of giving me a core dump and killing the program (if I'm lucky), I get a nice little exception that I can handle. The same goes for referencing a null pointer (reference).

    Well, I am not a java programmer, so I don't know about java, but It seems to me that you are using C arrays in C++. The STL provides several data structures that are indended to replace C arrays. These include vector, and list, both of which dynamically allocate their size and automatically resize if you overflow thier bounds:

    int main()
    {
    vector<MyClass> vec_myclass;
    MyClass temp;
    ifstream fin;

    while(!fin)
    {
    fin >> temp;
    vec_myclass.pushback(temp);
    }

    cout << vec_myclass.size();
    return 0;
    }

    The user doesn't even need to check the size, although that is provided.

    --
    ...interesting if true.
  159. Re:Java hype by Anonymous Coward · · Score: 0

    However, if you truly understand the Swing API and the Java language, you can write GUIs that are just as responsive as native applications.

    That can probably be said about *any* complex technology that mostly sucks.

  160. Multiple Languages on DotNet not a Good Thing by Milo77 · · Score: 2, Informative

    I've read a little about the different languages that are available for .NET and I've used J# before. What I found out was somewhat disturbing and can be found documented out on the web in several places. First, it is clearly stated by MS that the intent of J# (and other langauges available on the .NET platform) is not to be able to use JAVA as you would in its "natural habitat". They'll admit that basically they wanted to allow programmers that were familiar with the *syntax* of JAVA to feel comfortable on the .NET platform. They even provided something that resembled the JAVA class library, but is horribly out of date. Why? Because they don't want you to use the JAVA class libraries, they want you to use the .NET class libraries. The version of Java's libraries they provide is intended as a stepping stone as you port your app to use the .NET libraries. When you hear MS talking about being able to use smalltalk (or whatever) on .NET they're not talking about using smalltalk with its class library (although one may be provided by MS or a third party), they're talking about using smalltalk-ish syntax to make .NET library calls. This is also why you'll hear people who understand what .NET is calling it "themes for languages" - it merely a superficial thing.

    1. Re:Multiple Languages on DotNet not a Good Thing by arkanes · · Score: 2, Interesting

      I don't see why that's a problem - the .NET class libraries are very extensive. And if you ported the class libraries for smalltalk or whatever to .NET, then you could use those, too. But one of the big features in .NET is language neutral objects (assemblies). Kinda like COM, but better. You write an assembly in whatever language you prefer, and it can be called from any other .NET language. Since the .NET class libraries are all assemblies, you naturally can call them from any .NET language.

    2. Re:Multiple Languages on DotNet not a Good Thing by Milo77 · · Score: 1

      I agree that parts of it are a good thing. However, you will usually end up writing code that uses part of the .NET class library (or only the .NET CL) and in my J# example you can see the downside: you have code that is written to JAVA syntax but can no longer even be compiled by a regular JAVA compiler. The same goes for smalltalk. In the end, I do not think that this should be thought of as some great advantage, but merely a convienience to people who don't want to learn C# syntax. Frankly, you should be able to pick up most of the syntax in a day - its the class library that'll take some time, and MS wants you to know their library regardless of the language syntax your prefer. All I am saying is that your smalltalk app won't compile with your smalltalk compiler anymore; you'll be stuck using .NET - the way MS wants it. It's brilliant especially the spin they can put on it: "you can use ay language you want on the .NET platform! YEAH!"

    3. Re:Multiple Languages on DotNet not a Good Thing by arkanes · · Score: 1
      It's hardly spin - it's true. And sure, you're locked in (sort of) to the class library you choose. That's true no matter what. I doubt that there was any evil chuckling and chortling at MS HQ while they planned to trick all the smalltalk developers into using the .NET compiler and then never being able to use smalltalk code again. The benefits are the ability to use syntatical constructs from different languages while still targeting the same runtime environment, and a language-neutral object interface, which is cool from a technical standpoint if nothing else.

      You can't just run a java bytecode compiler on your typical C++ app, either.

      I'll make a personal example - I know Delphi, but I don't like the syntax and I'm not truly comfortable with it. I'm more productive in C++ and other C style languages (even C#, which I've only messed with a little bit), because the syntax fits better with how I think. Another guy at work is a hardcode Delphi programmer - he finds it awkward to code in C++. Right now, if we want to interface components, each written in our preferred language, we'd have to do it all via DLLs, and a C api, and it's a big mess. So we don't do that. With .NET, we can each write our components however we want, and use them with no work or glue code or anything. I'd say that design is a signifigant technical improvment over Java, although switching to .NET for that alone would be silly.

    4. Re:Multiple Languages on DotNet not a Good Thing by Anonymous Coward · · Score: 0

      Another guy at work is a hardcode Delphi programmer - he finds it awkward to code in C++. Right now, if we want to interface components, each written in our preferred language, we'd have to do it all via DLLs, and a C api, and it's a big mess. So we don't do that. With .NET, we can each write our components however we want, and use them with no work or glue code or anything.

      Then your friend gets sick, a customer reports a problem but you can't fix it because you can't read your friends code! add 20 friends each with their own language all pissing into the same codebase, multiply headache by infinity!!!!

      at least dlls, corba ORBs etc. all introduce well defined boundaries, a big .NET project will left to its own devices decend into a chaotic mess.

      you ignorant fucking moron LOL ;)

  161. Re: So what? You ain't seen nothing yet! by the-matt-mobile · · Score: 1

    Java has made more inroads in the server room than it has on the desktop. Almost everyone will agree that applets were a huge mistake. Many others will also agree that AWT is not really a very good GUI development library. Fewer still (but I'm guessing still a majority) will express distaste for SWING. Minus the people who just don't like SWING because of the nasty metal theme, and then you loose that majority.

    Then, talk to those people who've done J2EE, JSP, and EJBs for a large project. That's the crowd in whom Sun has invested correctly, and that's the crowd who'll sing Java's praises for years to come. It truly is good stuff.

    You can use a hammer to pound in a screw, but a screwdriver is better for the task. Don't criticize Java for being a bad screwdriver. It's a damn good hammer.

  162. Re:Java hype by Anonymous Coward · · Score: 0

    Show that Java is better than C++ and get a "5" rating?

    Yip! Showing that Ford Pinto's are better than Yugo's is a sure road to Karma Heaven on /.

  163. Re:Java hype by arkanes · · Score: 1

    If the obvious way (and thus, the way most programmers will do something) is slow and inefficent, then your API is flawed. And anyway, since Swing (of neccesity) will use the native API to draw it's widgets, you're very dependent on the Swing implementation in your JVM. The Windows one has always sucked. In the future, this may change, of course. If you want Java GUI apps to get a better reputation, the the Swing API needs to improve so that it's standard usage is at some level better than "total ass".

  164. Transmeta? [Re:Languages for the Java VM...] by alacqua · · Score: 2, Insightful

    I always thought that this would be a good application of Transmeta's "Code Morphing" technology. If it can provide an x86 translation layer then I would think java would be an obvious next step, and all (most?) of their optimization techniques would still apply. Of course, if that were true they probably would have done it already, so I must be missing something.

    --

    Move on. There's nothing to see here.
  165. Re:The Future of Java? Even Brighter!! by thammoud · · Score: 1

    The T68 does not use Java. It is written in C and C++.

  166. Re:Java hype by arkanes · · Score: 1

    Our mainframe sucks ass. And it's really (really!) expensive. It would be cheaper to just throw dozens of PC servers at the problem, and we'd get better performance.

  167. Re:Java hype by ckaminski · · Score: 1

    Man I wish I had a mod-point for you. Well said.

  168. Porting Effort : 6 months(c) Vs 0 months(java) by Anonymous Coward · · Score: 1

    In the early 90's, I had to port an application server from AIX to Solaris ensuring common source base.
    It took us ~ 6 months to completely port and test the server.

    Later in 1999, we rewrote the application server in Java using Solaris as the target platform.

    Since then, we are running under AIX and OS X, without a single line of code change.

    An interesting observation is that the hardware platforms/OS(AIX->Solaris->OSX) have changed multiple times for our company but the applications remain the same. Thus it paid off tremendously by going with Java.

  169. enterprise applications by Stu+Charlton · · Score: 3, Informative

    I used to teach J2EE to wall street developers, and in particular new college grads. Most have no clue what an enterprise application is, so I came up with a working definition.

    Enterprise application is a software system that is:

    1. Distributed (with all the requisite problems of distributed computing)
    2. Secure (authentication, authorization, auditing, and encryption)
    3. Scalable (can handle increasing load without a re-write)
    4. Heterogeneous
    5. Fault tolerant and/or Recoverable
    6. As a corollary to (5), usually involves one or more transactional DBMS

    Each of these topics by themselves can take years to master.... which is why people tend to hold well-designed "enterprise applications" in high regard.

    --
    -Stu
    1. Re:enterprise applications by Anonymous Coward · · Score: 0

      I notice that "responsive" and "fast" aren't in that list.

      So really, as I've always said, java's biggest strength is it's DEVELOPER appeal, not it's end-user appeal.

      Let's face it, it's easier to write more maintainable programs in java, and it CAN be easier to make them more robust, given that it bitches at you about uncaught exceptions. But the most important question is - is what's best for the developer what's best for the client?

    2. Re:enterprise applications by Anonymous Coward · · Score: 0

      Let's face it, it's easier to write more maintainable programs in java, and it CAN be easier to make them more robust, given that it bitches at you about uncaught exceptions.

      Nag-ware? Oh joy.

    3. Re:enterprise applications by TheLink · · Score: 1

      Hmm, sounds like many webapps to me :)

      Distributed - yep, increasing everyday.
      Secure - yep https, session cookies, SSL client certs (optional), AA&A.
      Scalable- yep.
      Heterogenous - works with handhelds, PCs, maybe even phones.
      Fault tolerant - users have been trained to click reload ;). And programmers already deal with "user clicks stop button".
      RDBMS - yep.

      If that's all, then I figure I can add "enterprise applications" to my CV.

      --
    4. Re:enterprise applications by Stu+Charlton · · Score: 1

      I thought about including that in point #3 scalable, but I figured it was implicit.

      To be scalable assumes that you A) have picked an appropriate response time and B) throughput is a limitation of the physical hardware, not the software.

      I would suggest that "responsive" and "fast" are application-specific requirements -- how "fast" is "fast". Also note that response time is only one dimension of performance -- you don't mention throughput.

      I can assure you that in most cases, an application's response time and throughput have very little to do with choosing Java as a technology and a lot to do with project management and technical leadership.

      --
      -Stu
    5. Re:enterprise applications by Stu+Charlton · · Score: 1

      Sure. Then I'll ask: how many users? And I'm not to certain an interviewer at a brokerage or manufacturing company would appreciate "hit reload" as your answer to fault tolerance.

      Perhaps you misunderstood my point -- fault tolerance is about tolerating ALL faults - hardware, software, and user errors. How do you handle hardware failure? Do you crash-fail? Or do you continue in partial service mode? etc.

      How do you handle software failure? Restart the server? Or do you go to the lengths of Tandem servers and have process-pairs for everything? etc.

      So yes, you could put "enterprise software" on your resume, in the same way that anyone that learned QBasic and wrote a tic-tac-toe game could put "game development" on their resume. It still doesn't make you John Carmack.

      --
      -Stu
  170. Re:The Future of Java? Even Brighter!! by baldeep · · Score: 1

    Hmm, maybe my sources were wrong. How do you know this?

  171. Re:Java hype by jandrese · · Score: 2, Insightful

    I've always thought the negative press about Perl came from two sources:
    1. Academics, who see Perl as the new BASIC. Perl wasn't designed with a lot of the "principals of language design" or whatever they're called these days. It's not orthogonal, it's a relatively modern language that isn't OO. It's not functional. Perl was designed to make simple solutions to common problems. Academics don't deal with common problems, so Perl is largely worthless in their eyes. People in the real world love it because they deal with common problems all day long and hate writing hundreds of lines of C/Java for every new problem. One particuarly telling example (in the Camel book IIRC) was dealing with regular expressions. In a "proper" language, you would not need the "+" (match one or more of the previous item) because you already have the "*" (match 0 or more of the previous item). Hence, a+ can be written as aa* and should be eliminated. In the real world, nobody wants to retype a 14 character token.
    2. People who have never programmed in Perl hate it because it uses a lot of punctuation characters.

    --

    I read the internet for the articles.
  172. I'll write code in .net by Anonymous Coward · · Score: 0

    when Microsoft does, where is the .net version of visual studio? (not something that can put .net out, but actually written in .net), where is the .net version of Office? hell, show me a serous piece of software microsoft is writting in .net, and if they arn't using their own language for a decenct sized project, I'm not sure why anyone else would trust it.

    until they use it for some large scale stuff, it will remain broken.

  173. Re:Java hype by lux55 · · Score: 1

    Interesting points. Isn't Perl well-regarded in academic circles though? I thought it was doing quite well in areas like bioinformatics...

    I think your point #2 is also exactly the reason why practical people love Perl. At first glance, it makes Perl a horrible read, but after you know what those symbols do, they're perfect. People think in symbols and patterns (judging from many popular alphabets at least), and learning a new set of symbols is a lot easier than it sounds. We do it all the time without knowing it (street signs, washroom signs, colours, icons, the washing instructions on the tag of your shirt, etc).

  174. Re:Java hype by damm0 · · Score: 1

    "Enterprise App" is an application serving a need such that when it fails, financial losses are incurred.

  175. Re:Java hype by master_p · · Score: 2, Interesting

    I can't really disagree with you, but when we talk about Java, we should separate the issues:

    Java as a programming language

    Java as a computing environment

    For the first point, Java is a fine programming language and has quite many advantages over C++, but it also has some disadvantages:

    lack of generic programming; at least C++ has templates, which solves 90% of the problem; I have not yet a program that does not need to use arrays and lists of different types. Although Java uses Object, objects still have to be allocated on the heap with 'new', which is a waste of resources.

    no stack objects; I don't know the internals of the stack management and the complexity of C++, but since C++ managed it, why not Java ? why should I have to create an object on the heap just to use it locally ?

    no structs; some times I only want to bind together some data without the overhead of classes. I can't do that with Java. That means that I can't also have a binary package represented as a struct: in C/C++, I can cast the buffer pointer to the appropriate message structure and access the data (for example received from the network) with one call, but in Java I have to code a whole series of classes in order to convert a byte array to a message.

    I don't know why the garbage collection is such an advantage. In the place that I work we have written apps with milions of lines of code using C++ and we never had a problem with memory leaks. Of course, being military and scientific apps, there was a good design before coding, so we had a pretty good knowledge of when to allocate/free stuff. But it is not hard to make C++ objects garbage-collected. All that is needed is a base class that upon its construction puts the object in a global list and a template pointer that increases/decreases automatically the reference counter of the garbage-collected object when assigned to it; later, the list will be traversed and objects with no reference will be deleted.

    We have used Qt for our apps, and the speed of coding is similar to that of Java. We also have a Java department and we keep hearing design issues that are derived from the lack of certain features in Java, generic programming being the most serious flaw.

    By no means am I saying that C++ is better than Java, the programming language. But the goals of the two languages are different. The big problem of C++ is the lack of standardised libraries for gui, multithreading, database I/O etc. Thank god for Trolltech that we have found a piece of code really worthy of its price, and that is Qt which solves all these issues (and many more).

    For the second point, I don't like either interpreted or byte-code languages with virtual machines. I think they are a waste of CPU time and resources. I am 100% certain that there is no point in having static Java apps executed by a virtual machine: they are very slow, even with top-of-the-range Pentiums. And when we say slow, we mean slow enough for an experienced user to handle: for example, I have personal experience of a versioning and control application that we use at work which is very slow, although it runs on a P4 at 1.8 GHz. It may not be slow, but it definitely feels slow.

    Another problem of C++ is that it does not compile the same in every platform. The Java's VM solves the problem, but is it really needed ? aren't programming languages invented for this exact reason ? other environments offer complete source-code level compatibility for every platform (for example ADA 95) without a VM. Why Java needs a VM to run static apps ?

  176. Re:Java hype by Anonymous Coward · · Score: 0

    a programmer of equal skill in C++ and Java can write the same program in less lines of Java code

    The problem with your statement is that c++ is a much more complex language than java and a truly competent c++ programmer would find java to be easy to learn, while a programmer knowing only java would find it much more difficult to learn c++. It would be difficult to find a java programmer equally skilled in c++, but it would be easy to find a c++ programmer equally skilled in java.

  177. Re:The Future of Java? Even Brighter!! by Anonymous Coward · · Score: 0

    T68i does not include any Java. That is a fact!

  178. Re:Java hype by mgkimsal2 · · Score: 1

    Would that be the IO library that was so good it was scrapped and rewritten last year?

  179. Re:Java hype by bryston2 · · Score: 0

    make it relatively simple to build a complex enterprise application, and by extension less expensive. I think mediocre coders (who will cost companies less) can build more robust apps in Java than other popular languages. Mediocre coders writing complex enterprise applications. Thanks for making me LOL today!

  180. Apples and Oranges by ttfkam · · Score: 1

    Try writing (let alone porting) an app that uses reflection in C or C++.

    The usable, native compilation subsets of Java from TowerJ, Visual Age, Visual Cafe, gcj, et al. are still more complete than just about any other language out there.

    I forget, where's the standard TCP/IP socket interface in C and C++ that works across all platforms?

    For that matter, how many C compilers out there are 100% C99 compliant? How many C++ compilers out there are 100% ISO C++ 98 compliant.

    I can't use reflection portably in TowerJ, but I can use threads, sockets, database connections, graphics, user interface widgets, XML, file I/O, Unicode character processing, distributed method calls, data structures, general algorithms, logging, regular expressions, compression, i18n, l10n, cryptography, image manipulation, and centralized directories.

    Show me another language in common usage that has standardized interfaces for all of these things and also compiles to native code. Personally, I'm quite happy with Hotspot and/or JITs, but we were talking about native (ahead or time) compilation.

    A question regarding reflections: have you tried using TowerJ and linking in the JIT only for the spots that need reflection?

    --

    - I don't need to go outside, my CRT tan'll do me just fine.
    1. Re:Apples and Oranges by kevlar · · Score: 1

      You've entirely missed the point.

  181. Re:Java hype by iion_tichy · · Score: 1

    Sounds like Perl to me. It's a matter of taste. A lot of people can't bear Perl code, others prefer Perl style and hate Java. Personally, I think Java beats Perl a million times. Perl code just isn't readable, especially not cross-programmer. Sure, if you apply the 'shorter code equals easier maintenance' formula, Perl probably wins. But I think Perl makes a good case against this formula. You could probably write a whole web application as a Perl one-liner, but to debug it would be a full-blown research project of several months or years.

  182. Re:Java hype by pyrrho · · Score: 1

    >What I can say conclusively is that a programmer of equal skill in C++ and Java can write the same program in less lines of Java code.

    While I agree 100% with the overall message of your post (that context is relevant to which language is superior), I disagree with the specific sentiment above. If you have a class system you are using, then the C++ can be fewer lines. Comparing the Java libraries with the C++ stdlib isn't really a fair comparison, because there are a multitude of free and commercial APIs and classes that also "do a lot for free".

    --

    -pyrrho

  183. Re:Java hype by Anonymous Coward · · Score: 0

    I think he means that the *clients* aren't all in the same building, on the same LAN.

    If they are "thin" clients, then you have a web-browser-like setup. So, do you mean "a bunch of fat clients all over the place"?

  184. Re:Java hype by Alpha+State · · Score: 1

    OK, you can do array bounds checking extremely easily in C++, and garbage collection with a bit more work.

    Tell me, how do you turn them off in Java when you don't want them?

  185. Re:The Future of Java? Even Brighter!! by j3110 · · Score: 1

    Most of the slowness is introduced from poor design, or overly complicated designs. It will only matter as much as C vs ASM by the time everyone has a 2Ghz processor. :) I don't think you were trying to say it's an obstacle, but rather you were trying to say it is a concern. I wouldn't make a language choice based on the slowness of swing or Java (because they aren't that slow). That doesn't mean that the job is done either. When Java is more popular, 3rd parties will be selling JVM's that out perform the free standard one by leeps and bounds. When there are a lot of applications built on Java, users will pay for a better VM... they paid for Memory doubler (which didn't do anything... really... it did nothing but display fake statistics).

    The mobile/embedded devices are indeed going to be the next Java win. Desktop applications won't be far behind though. I would say Webstart will become a big thing soon for companies. Imagine never having to update software on the end machines! Well... except for the OS, but chances are, that changes less than your custom software. You don't even have to install the software on the new machine... the user accesses the application right off the corperate website, but it's a rich client!

    --
    Karma Clown
  186. Re:Java hype by Anonymous Coward · · Score: 0

    Please note that Java is a relatively new language and still in evolution. Generic coding (templates) are still discussed and will be introduced in the next version of Java.

  187. Re:Java hype by Anonymous Coward · · Score: 0

    Perl code just isn't readable, especially not cross-programmer.

    How do you know, you are not a Perler. Some Perler's love reading other's cryptic code. The challenge keeps them awake, and they get better with time. Perhaps they would rather read bad Perl code that takes up 3 lines than bad Java code that takes up 3 pages.

  188. Experimental Languages by TheMadReaper · · Score: 1

    A lot of small experimental languages target the JVM. That way they get all kinds bytecode tools for free.
    One example I got to work with a few years ago is Nice. A nice (no pun intended) combination of functional programming and java.

  189. Re:Poor Micheal by Anonymous Coward · · Score: 0

    Duh duh duh tchhhhh!

  190. Re:Java hype by 21mhz · · Score: 1
    The STL provides several data structures that are indended to replace C arrays. These include vector, and list, both of which dynamically allocate their size and automatically resize if you overflow thier bounds

    pushback may get you this, but one of the biggest sources of errors is an out-of-bounds array indexing. In such a case, the behavior of STL's indexing operator for vectors is not defined. Sure, in some decent implementation, you would get an assertion if you compiled with debug macros. But it gets you only so far.

    --
    My exception safety is -fno-exceptions.
  191. Re:Java hype by iion_tichy · · Score: 1

    How do you know, you are not a Perler. Some Perler's love reading other's cryptic code. The challenge keeps them awake, and they get better with time. Perhaps they would rather read bad Perl code that takes up 3 lines than bad Java code that takes up 3 pages.

    True, as I said in another post, it's a matter of taste. Also, just because it's fun doesn't make it effective. The riddles on the last page of the newspapers are somteimes fun, too. Actually I sometimes enjoy doing a little hacking, too, like weird SQL constructs or regular expressions magic. But I still wouldn't want the whole project to be like that.

  192. Java can't die easily by megajini · · Score: 1

    I think Java can't die that easily. Nearly all posts forget about a very big supporter of Java, IBM. IBM will never support Microsoft-propietary on its servers. (I mean, since IBM started eclipse, it's entire development platform is built and made for Java.

    So with server suppliers Sun and IBM it's natural to use Java on the server. An when the backbone is Java, why not use the same environment (Java, JDBC-Drivers, XML-Access) on the client. (it's by far easier to maintain...)

    But of course: It'd be great to spread JVM among the clients around the world, although JVM is a fairly "heavy" thing over the slow lines out there... (at least Sun's, which is the only "comfortable" under Windoze)

    So the developing community should concentrate on making standard routines for installing the JVM by providing direct links on webpages and so on. (like this happened with Acrobat Reader which you can expect being installed on nearly every system connected to the internet)

  193. Re:The Future of Java? Even Brighter!! by mooZENDog · · Score: 1

    If it's going to get bigger for phones, it's got to be faster

    I'm not too sure what you mean by this. When I said 'bigger', I meant that it was a big player, with loads of market-share.

    Incidentally, J2ME *is* getting bigger, with the next MIDP version (think of MIDP as a cut down Java API) coming out (at 2.0 now, although it won't make it onto a suitable number of handsets until late 2003). I personally think this is a good thing - the functionality currently available with MIDP1.x is pretty cut-down, and the phone specs are increasing at a downright scary rate, so any bloat (and I think it's all been designed very well, collaboratively with handset manufacturers, so bloat isn't realy an issue) will be offset by faster handsets!

    --

    ---
    "An eye for an eye leaves the whole world blind" - Gandhi
  194. gcj by Anonymous Coward · · Score: 0

    It might be worth remembering that gcj can compile JVM bytcode and Java source to native code for Linux, Solaris and Windows. I know it is far from complete for Swing etc., but it's getting there fast.
    So Language --> JVM --> native app. is also possible.

  195. Re:Java hype by baldyman · · Score: 1

    Also:rmi
    offers rpc plus the ability to dynamically load code over a netowrk and execute it locally. This is a major advantage over CORBA/SOAP implementations and goes with the platform-portability, you can do some very cool stuff like jini this way.

  196. Re:Java hype by cyranoVR · · Score: 1

    If it is on the Internet, then why does it have to be *geographically* distributed? Just make one big-bass server room running things like Oracle somewhere in Denver. That way you don't have to duplicate similar configurations and setups all around the country (or world). (With off-site backups, of course).

    Smells like a conspiracy to sell duplicate Sun-boxen to me.


    Two words: LEGACY SYSTEMS

    From your statement, I think we can only conclude that you have no Real World work experience.

  197. Re:Java hype by FortKnox · · Score: 1

    Java doesn't have templates (why do you need one when you have java.lang.object (void* for you you C++'ers)), but it does have a Containers object (interface) that mimics the entire stl library (and it comes standard with the Java SDK (java.util.*)). For example, an "ArrayList" is an implementation of the container that comes complete with iterators and methods. Best part? All containers are integrated together. So changing your ArrayList into a Hashmap is as simple as:
    HashMap myHashMap = new HashMap( myArrayList );

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  198. Re:Java hype by sporty · · Score: 1

    Even perl has its bugs.. just like java. IO::Socket has some problems on some architectures.

    --

    -
    ping -f 255.255.255.255 # if only

  199. Re:Java hype by crazyphilman · · Score: 1

    Tablizer asked: "If it is on the Internet, then why does it have to be *geographically* distributed?"

    You misunderstood my meaning. The main servers can be all in one location, like for instance your RDBMS, web server, and middleware. But the SYSTEM is distributed, because it contains client-server components (like client software running at various locations) browsers being one form of client of course, and so on... See what I mean? It's distributed because the people accessing it are all over the place. And, sometimes, a local office will have its own servers for one purpose or another, and they'll have to work with the servers at another location... You have to be flexible in your thinking here.

    Think about it this way: what if you were a credit card company? You wouldn't want to do things YOUR way, putting everything in one building. Because then, Fight Club will come blow it up and destroy the debt record. So, instead, you duplicate your servers (so you can continue processing requests) and your data (so you don't "miss" any debtors)in every major city in the U.S. where you have a presence. And, you synchronize this data nightly. Then, when Brad Pitt blows up your main office, you just continue with business as usual, and file your insurance claim.

    See what I mean?

    --
    Farewell! It's been a fine buncha years!
  200. Re:Java hype by sporty · · Score: 1

    Yeah, but there's a diff. Cobol is more a biz language, as java tries to be an end all anguage. Granted, it's not bad to have high goals. It just means that you'll try to evolve.

    We've seen java 1.1, 1.2, 1.3, 1.4. Granted there will be a compatability shift between 1.2 and 1.4, but moving from 1.2 to 1.4 is little effort.

    --

    -
    ping -f 255.255.255.255 # if only

  201. Re:Java hype by sporty · · Score: 1

    Shit happens :) People make accidents. At least you don't pay for it with a buffer overflow.

    --

    -
    ping -f 255.255.255.255 # if only

  202. Re:Java hype by crazyphilman · · Score: 1

    An A/C asked: "If they are "thin" clients, then you have a web-browser-like setup. So, do you mean "a bunch of fat clients all over the place"?"

    Could be a mixture of both. There might be times you want a fat client. It depends on your application. But, you can have servers and clients in different locations -- legacy systems, locations and departments which want closer control over their data, weird political shit going on... You can get into some heavily weird, complex stuff.

    Gotta be flexible.

    --
    Farewell! It's been a fine buncha years!
  203. IE? by Leto2 · · Score: 1
    Update: 01/23 16:00 GMT by M: Comments were disallowed when this story was originally posted; fixed now. My mistake (although KDE3's stupid mouseover-activates-form-elements user interface, now finally fixed in the latest versions, has to take some blame too).

    I don't want to sound like a troll, but at least in IE this problem doesn't arise. It's nice to use Open Source software and all, but with this many bugs still open, I'll stick to IE, it's fast, and most webpages are written for it, anyway.

    Note to moderators: Sure, mod me down, everytime someone brings up that IE might be better than an OSS product, it MUST be troll!

    --
    <grub> Reading /. at -1 is like driving through Cracktown in a convertible that is stuck in 1st
  204. Re:Java hype by jandrese · · Score: 1

    I guess I should have been more specific. I was referring to Computer Language Academics. Computer Scientests mostly. Some of these guys aren't happy unless the language is completely impractical for any real world use though (ever try to program a Turing machine?) Much of the time the resentment comes from languages that don't include their pet theory, like complete orthogonality or instruction set minimization. The Bioinformatics people are probably using Perl to solve the simple problems they have so they can get back to work with the stuff that really interests them.

    --

    I read the internet for the articles.
  205. Re:Java hype by Tattva · · Score: 1
    pushback may get you this, but one of the biggest sources of errors is an out-of-bounds array indexing. In such a case, the behavior of STL's indexing operator for vectors is not defined. Sure, in some decent implementation, you would get an assertion if you compiled with debug macros. But it gets you only so far.

    Sure, you can use the indexing operator, which is defined to be insecure, or you can use at() for the same functionality w/o the operator overload but with bounds checking.

    It is still, of course, nice to have error checking as a feature of the language rather than the libraries.

    --
    personal attacks hurt, especially when deserved
  206. Re:Java hype by __past__ · · Score: 1
    Java is extremely cross platform, both on the server side and the client side.
    Well, it is a platform of it's own. Integrating Java with the host system isn't that much easier than integrating two seperate systems.

    By the way, try using Java on a free BSD. FreeBSD is the only one of them (of the "core three", maybe it's better on Darwin) with a patchset to get a native Java, but they can't distribute it because of Suns license.

    However, if you truly understand the Swing API and the Java language, you can write GUIs that are just as responsive as native applications.
    I used to believe this, until I had to use the Swing-based Solaris Management Console coming with Solaris 9. If Sun can't write performant Java GUIs, I guess people should start searching for a solution rather than for excuses.
  207. Re:Java hype by Tattva · · Score: 1
    I don't know why the garbage collection is such an advantage. In the place that I work we have written apps with milions of lines of code using C++ and we never had a problem with memory leaks. Of course, being military and scientific apps, there was a good design before coding, so we had a pretty good knowledge of when to allocate/free stuff. But it is not hard to make C++ objects garbage-collected. All that is needed is a base class that upon its construction puts the object in a global list and a template pointer that increases/decreases automatically the reference counter of the garbage-collected object when assigned to it; later, the list will be traversed and objects with no reference will be deleted.

    Even if you ignore the advantages of managed memory, you can't ignore the fact that new is a blocking, non-deterministic, operation. Good garbage collectors can operate on a different thread and (mostly) stay out of the path of execution. new() is nearly a no-op in garbage-collected environments. You would really have to do a lot of (error-prone) work in C++ to achieve this through libraries rather than the compiler itself, and it is still too easy to defeat with bad programming practice.

    Also, you mention the lack of stack objects. Java does have stack primitives, and dynamically allocated counterparts to provide object services, which is a clunky combination. .NET improves on this with stack-allocated structs and "boxing" where a primitive remains stack allocated until the compiler/interpreter detects that an object service is needed (ToString(), etc), and it boxes the primitive up into an object and unboxes it when done. You don't pay the object penalty if you don't need object services. Good design can allow you to avoid paying much of a penalty for Java's lack of stack-allocated objects (singleton pattern with a Reset() method for reusable working class object, etc.) Unfortunately, some of the Java library's objects aren't well designed for reusing instead of reallocation, especially in the GUI, so you may find yourself doing allocations in the painting loop without some trickery.

    That said, it sounds like your lab has sound development practices, which does tend to aleviate much of the need for the outstanding features of Java/.NET.

    --
    personal attacks hurt, especially when deserved
  208. Re:Java hype by Tattva · · Score: 1
    That does go a long way, but there are a few features of templates that make them unique for "object"-based class hierarchy polymorhpism:

    • Type-safe containers. This is enforced at compile time, and the fastest way to remove bugs (aside from not having them in the first place) is to compile them out.
    • Efficient class specialization: By delegating operations to a template class parameter, a class can have its behavior changed dramatically, while operating on a highly abstracted and flexible model. The I/O streams classes of STL are a great example of this. You can, once again, achieve this through polymorphism, but by compiling it with templates, you guarantee at compile time that the required services of the template object are present. If they aren't, the method the second class requires won't be present and the code will not compile, whereas in polymorphism, the function will be there but not implemented, or the requested type conversion will fail.
    • The STL and libraries. What can I say, this is so cool I don't think I fully appreciate it yet. It seems to me that this is a serious attempt to achieve abstraction in the functional rather than object domain. It is reallly tough to wrap your brain around, but worth it.

    Well, that's not everything, but it is a pretty good list, I think.

    --
    personal attacks hurt, especially when deserved
  209. Re:Java hype by Jord · · Score: 1
    If Sun can't write performant Java GUIs, I guess people should start searching for a solution rather than for excuses

    Do you think that everyone in Sun can write good java code? What I stated in my post was not an excuse but rather a fact. My team is developing a very large Swing GUI and we are having very little "sluggishness" that everyone claims that Swing is plagued with. However, every time we find a slow spot it is invariably because of someone taking a short-cut in the code that caused the problem.

    It is possible to write efficient and speedy GUIs in Swing. Just because it cannot be done with drag and drop does not mean it cannot be done.

  210. Re:Java hype by Tablizer · · Score: 1

    Two words: LEGACY SYSTEMS

    So what you are saying is that you put Java on legacy systems in order to share information to and from them?

    I do not hear this mentioned much in Sun's literature. Besides, you can use HTTP to link diverse systems without using Java's funky protocols. Easier too.

  211. Re:Java hype by Tablizer · · Score: 1

    Think about it this way: what if you were a credit card company? You wouldn't want to do things YOUR way, putting everything in one building. Because then, Fight Club will come blow it up and destroy the debt record.

    That is called "off-site backups". You don't need Java to do off-site backups. In fact, I think most commercial databases offer built-in tools for just such things (or at least extensions).

  212. Re:Java hype by Tablizer · · Score: 1

    "Enterprise App" is an application serving a need such that when it fails, financial losses are incurred.

    Financial loss is a wide continuum.

  213. Libraries Comparison by Phoukka · · Score: 1

    Heh, hehe, okay.

    According to Bagley's site, we should all be using Ocaml anyway. Who knows, he may even be right...

    In reference to the Bagley test, Java was more performant than Python, true. But Python won over Java on both memory and lines of code. Also, his tests, as all artificial benchmarks, are both accurate only for the point-in-time and are only accurate within the limits of the test conditions themselves. More recent versions of both Java and Python are faster. On top of that, special-purpose optimizations exist for both Java and Python if you really need that extra spurt of speed -- think Jikes or TowerJ for Java and Psyco for Python. More to the point, though, Java may be faster than Python, but it isn't faster by an order of magnitude. The difference in speed between them is not enough to worry about -- if you really need that much speed, you won't be programming in either Java *or* Python, you'll be coding in C and assembler. Your performance argument is irrelevant.

    Your libraries argument is somewhat more compelling. However, you may not be aware that there are two major versions of Python, standard Python implemented in C and Jython, implemented in Java. Using Jython, you can write Python that has full access to all of Java's libraries.

    On top of that, I'll make a very rough comparison between the various projects on Jakarta and extant Python libraries. I don't think I've seen anything like this, as Python has a poor record for collating their libraries and apps in one place, so the effort is worth it simply for educational purposes, if nothing else.

    Disclaimer: I am not terribly familiar with most of these projects, and they have varying states of completeness and maturity. I merely aim to show that analogs of the various Jakarta projects do exist in the Python world. Please feel free to peruse them yourself and come to your own conclusions.

    Jakarta Ant -- PyAnt , SCons

    Alexandria -- I don't know of any comparable Python applications. However, the individual components of Alexandria (doc generation, CVS access, etc.) are available: check out HappyDoc , and various modules for use with the Zope application server, including CVSFile

    Okay, now I'm going to lump together a bunch of Jakarta projects. Individual authors and users of these projects will inevitably scream, but my justification is that they are all web application servers of one sort or another. Their purposes are all the same. They have many differences in approach, philosophy, scope, and implementation, but at heart, they are all web application servers or web application server frameworks. Those projects are: Avalon, Jetspeed, Struts, Turbine, Velocity, Slide, and Tomcat itself. Oh, and I might as well throw James in here, too. Python web app servers and frameworks are equally numerous, and several are in advanced stages of maturity: again Zope, Twisted, Webware, Quixote, CherryPy, and SkunkWeb. There are more, but I'll leave that as an exercise for the reader. Google is your friend.

    Lucene has no real counterpart in Python. David Mertz has put together a text indexer and search program, available at his site, but it looks small compared to Lucene. There is also something called WePaSe, but there is no information on it aside from its freshmeat release announcement.

    Gump also has no counterpart. Cactus has an equivalent in WebUnit and PyUnit. Log4J's Python copy is called, naturally, Log4Py.

    ORO and Regexp provide regular expressions for Java. Python has regular expressions built in to the standard library.

    OJB provides an object-relational bridge for Java, similar in concept to Sun's JDO specification. Python counterparts are Modeling , PyDO, which is a subproject of the above-mentioned SkunkWeb, and MiddleKit, a subproject of WebWare.

    ECS, JMeter, and POI have no Python counterparts. BSF also has no counterpart, since it embeds a scripting language in compiled Java. Perhaps its "counterpart" is Jython. Likewise, BCEL has no counterpart, nor does Watchdog.

    Taglibs has no direct counterpart. Instead, Python has Spyce, Cheetah, PSP, and probably close to a dozen other implementations of the ASP/JSP theme, each with their own library of tags. Lack of a standard is perhaps not a good thing, but the existence of bunches of competing implementations is not a bad thing. Perhaps the most direct counterpart would be Zope's built-in technologies, DTML and ZPT. ZPT has also been built out into a standalone version, SimpleTAL.

    Jakarta Commons has too many small projects for me to want to research Python equivalents. If you are looking for something in particular, check the Vaults of Parnassus first.

    As for Apache XML, Python has SOAPy and ZSI implementing SOAP, and DOM, SAX, and XML-RPC are built in to the standard library. 4Suite implements DOM, SAX, RDF, XSLT, XInclude, XPointer, XLink and XPath, and has an XML and RDF data repository and server built on top, which would make it very roughly equivalent to both Cocoon and Xindice. I don't know of any Python equivalents for Batik, FOP or XMLSecurity.

    Python has relational database access through its DBAPI standard, with adaptors for just about every database. There are a number of object databases coded specifically for (and often in) Python, the most well known being ZODB, which was developed by Zope. There are adaptors for other object databases as well.

    There are really two spaces where Java outstrips Python, and the second space is IMHO directly caused by the first: standardization, and J2EE. Python puts out a language implementation and a lot of very useful libraries, but does not have any standardization body like the JCP. The result is lots of fragmentation. Individual developers write their own libraries and applications that compete with each other while offering wildly differing APIs and programming approaches. There has been some push to organize, through the official Python SIGs, but their efforts, while noble, have not been massively effective. Only this month has an initial implementation of a Python library repository similar to CPAN been released. Kudos to Andrew Kuchling, who made it happen, but it is LONG overdue.

    Regarding J2EE, the only viable competitor is Zope. Even then, Zope really doesn't address the same problem space. The shortfall here comes from a number of different factors: corporate buy-in, public perception, lack of an established problem-space solution, and lack of published standards. Zope is a great solution, and has been used by a number of high-profile companies, but its focus is different.

    Well, I hope you find this comparison to be useful. *I* certainly found it enlightening.

    1. Re:Libraries Comparison by bwt · · Score: 1

      Your performance argument is irrelevant.

      The previous poster made the false claim that Python was faster than Java. I clarified the facts. I do not have a "performance argument" -- the original poster did, but it was one based on untruths.

      Personally, I care most about total development time and making programming fun. Each of Java and Python excel in these areas, but in different (and complimentary) ways. Which segways into...

      However, you may not be aware that there are two major versions of Python, standard Python implemented in C and Jython, implemented in Java. Using Jython, you can write Python that has full access to all of Java's libraries.

      I am quite aware of Jython and use it from time to time. In fact, I use the Jedit plugin for Jython as my main way to play with Python. I see Python as a great scripting language for Java classes and actually prefer Jython to Python. I've also played a bit with JRuby, which isn't quite as mature as Jython but shows tremendous promise. On pure joy of hacking our brand new code, Ruby is my favoite.

      Going back to the original story diverse multi-language use of the JVM is a reality NOW and is an advantage of java over .net, contrary to all the marketing FUD saying it's the other way around. The poster I was rebutting was ragging on java for not being as good as python. The existence and success of Jython refutes his points, not mine.

      Your comparison between Apache Jakarta and the various Python libraries underestimate somewhat how the Jakarta projects have substantially less redundency between them and are better coordinated as standard building blocks that fit together (mostly - struts and velocity are alternatives, I suppose). For example, Jetspeed works with Velocity, Cocoon, and Tomcat. All build using Ant. All test with JUnit. Add mail with James. The projects are NOT "all web application servers of one sort or another" but rather more like a coherent and compatible set of mix-and-match components of web application functionality.

      I don't really care much about "lines of code" so much as "lines of code we have to create". The more hardened code you can reuse, the better. The bottom line is that Java's programmer community is extremely well integrated and dwarfs many alternatives.

      Frankly, I like Python's syntax and ease of use better than java's. I'm not a java snob -- there are lots of "cool" languages in the world. I'm just saying that if somebody like the previous poster is going to openly "rag" on java, they'd better have some better points than what was offered.

    2. Re:Libraries Comparison by Phoukka · · Score: 1
      All very valid points. I apologize for and retract the "irrelevant" comment. Or, perhaps I should stand by it, but modify it to say that any such performance argument is irrelevant, due to the relative closeness in processing time between Java and Python.

      Personally, I care most about total development time and making programming fun. Each of Java and Python excel in these areas, but in different (and complimentary) ways.


      I must admit, that's the major reason I prefer programming in Python to Java -- it is more fun, and takes less time. On the other hand, I often become frustrated by the general lack of maturity, the redundancy, and the lack of coherence evidenced by the libraries, toolkits and projects available for Python. All of which are NOT problems in Java.

      As far as the original story goes, I have no argument with that one way or the other -- the JVM is a very handy tool, it can indeed be used by multiple languages, and that is a competitive advantage. I'm not, however, at all sure that it really means that much. I think it is highly useful to see a given VM with wide-spread adoption throughout the world of computing be used as a target VM for multiple languages. I just don't see it as a competitive feature of Java, as such. A competitive feature of the JVM over the CLR, definitely. But then, Sun hasn't visibly realized that the JVM is, or should be, more important than the Java language. The language, by itself, is just a language -- a slightly awkward, but generally easy to use programming language with a lot of libraries, tools, and corporate uptake. On the other hand, the JVM is a *platform*; the JCP is an industry process for deciding how the parts of the platform should run. And thus, the JVM and JCP are potentially of MUCH greater value than the language. That fact is why we should all be cheering Motz' decision to force MS to bundle the JRE. And I think all of us who appreciate Java and the JVM are just reiterating that.

      As for my comparison, it was something I did for fun. I agree completely, the Jakarta project is very much better coordinated, and for the most part there is not so much redundancy. However, I would point (nitpick alert! :) out that Struts uses (or can use) Velocity as a component -- the redundancy, in my understanding, is between Turbine and Avalon, both of which are web app frameworks/toolkits that address more-or-less the same space as J2EE. And while your point is well-taken, the same can be said for various Python projects, so long as one remains within the project. Webware, for example, has subprojects that address user management (UserKit), database connectivity (MiddleKit), presentation (PSP), and general web-logic (WebKit). Zope has lots of Products that address many of the different areas. Some of them are redundant, many of them are upgrades or modifications of earlier Products. And, as soon as we go outside of the Jakarta project in the world of Java, we see similar problems -- how many times have we heard massive complaints regarding how hard it is to make a web app built for WebLogic work in WebSphere? The difference, though, is the JCP, which *greatly* improves the world of Java by (in this case) realizing there is a problem and addressing it by starting up a specification for web-app deployment. But the overall maturity, coherence and sense of united vision demonstrated by this is decidedly lacking from the Python world, and that problem frustrates me a great deal. I don't know what to do about it, if anything.

      On the other hand, the comparison itself is, I hope, useful if for no other reason than to show that Python at least has a darn good start in addressing the areas of concern, and often has projects that can easily compete on both features and quality of code.

      In the end, though, I bow to your conclusions. The Java community is indeed better integrated and does dwarf, in this case, Python's. And yes, the previous poster was indeed pulling his points out of thin air. But, I suppose, I have a question for all and sundry: Java has a great advantage in its JVM and with the JCP (all Sun/Apache politics aside). How can we achieve such integration of community in other languages? Does anyone have any ideas?

    3. Re:Libraries Comparison by bwt · · Score: 1

      Java has a great advantage in its JVM and with the JCP (all Sun/Apache politics aside). How can we achieve such integration of community in other languages? Does anyone have any ideas?

      Larry Wall does: it's called Parrot. I'm rather surprised that it isn't getting greater attention in the open source community. In my view, now that Mozilla and Open Office have achieved some measure of usability, Parrot is the biggest unrealized potential in all of open source.

      Parrot will be a VM that perl will target, but that both Python and Ruby (and lots of other stuff) could (and SHOULD) target. Anything that targets Parrot can use any libraries that target Parrot. Imagine Perl, Python, and Ruby all combining forces in terms of library creation, eliminating triplicate creation of everything, and running on 100% pure open source VM.

      Although the Java community is still larger than even this combined pool, the difference is less and if you compare the *open source* java community it might be about even.

      Also imagine the potential for Parrot scripting of other open source apps. Wow!

    4. Re:Libraries Comparison by IpalindromeI · · Score: 1

      Although the Java community is still larger than even this combined pool [of Perl, Python, and Ruby]

      Surely spoken by someone outside the Perl community. I might say that more people are paid to write in Java, but I wouldn't call that a community.

      I do agree with you about the potential of Parrot, though. By the time it's released (I think current estimates say about a year), it'll already have functional support for a number of languages, including Python and Ruby, and probably Java and C#. This one's gonna be big, folks.

      --

      --
      Promoting critical thinking since 1994.
  214. Re:Java hype by crazyphilman · · Score: 1

    Tablizer said, "That is called "off-site backups". You don't need Java to do off-site backups. In fact, I think most commercial databases offer built-in tools for just such things (or at least extensions)"

    Tablizer, This whole subthread between you and me is based on the fact that you don't seem to understand why a company or government would have servers in more than one location. Right? Which implies that you've never worked for a large organization and you're just being dense and stubborn. So let's consider some cases in which a company or companies might have large, distributed systems with some degree of redundancy.

    Some organizations will want to incorporate their own systems with another set of systems, for instance during a corporate merger. This will mean that there are multiple locations, all of which have their own servers, and which must now interoperate. Ok? I guarantee that all of Hewlett-Packard's and Compaq's records do NOT lie in a single server room in a building somewhere, and they do NOT rely on "off-site backups" for protection (although I'm sure they have them).

    Large, multinational corporations have multiple locations in multiple cities, and there is almost certainly a great deal of redundancy in their systems. This is because (unlike you) they have considered the possibility of fire, or some other hazard, taking their servers out of commission. Thus, they have some degree of duplication of capabilities, and they have systems in place which synchronize records among their databases. Getting the picture yet? Which brings us to another point, which is that organizations of any significant size will do part of their business in one location, and part in another. Consider a large manufacturer for example. An organization like this may have corporate offices in NYC, Chicago, and L.A. all of which have the ability to handle transactions for the other two in the event of some sort of disaster. Also, they might have manufacturing plants in Kuala Lumpur, Thailand, and Taiwan, plus affiliated plants which produce parts and supplies for them. Those plants will have their own systems, and the affiliates will have THEIR own systems, ad infinitum. All of these systems will have to interoperate with the home offices in the States, and there might be some redundancy here, too.

    If you're getting the picture yet, you'll understand that we're talking about really HUGE systems here. We're talking about companies like Chase Manhattan Bank, or General Motors, not a little dot-com with ten employees, here. Organizations with not just thousands, but tens of thousands of employees, in multiple locations across multiple countries (let alone states).

    Now, perhaps you'll understand why your comment that all we need is a server rack and a tape drive for "off-site backups" isn't just naiive, but really, agonizingly, stupid.

    Enterprise systems usually are very, very large. Their scope is generally greater than one person can fully follow at one time. This was the whole point of object oriented programming in the first place, and it's one reason why people love enterprise javabeans. When people talk about scalability, this is what they're talking about.

    One server and an offsite backup do NOT an enterprise system make, any more than a matchbox car can run in the Daytona 500.

    Now please think about this a little before you come back.

    --
    Farewell! It's been a fine buncha years!
  215. Re:Java hype by TheLink · · Score: 1

    Y'know that could be a reason why the job market is bigger for Java programmers. You need the extra programmers just to keep up with those SuperLongRSIInducingNames :).

    The sad thing is, I thought the real CS academics would be out pushing LISP or LISP like stuff rather than Java. Then again maybe they've already written the perfect Lisp program already and it's moved to the next plane of existence and created its own universe.

    --
  216. Re:Java hype by __past__ · · Score: 1
    Do you think that everyone in Sun can write good java code?
    No, but I think that there should be some Sun employees that can, and that Sun would chose them to implement their GUIs.

    However, I don't argue that it is impossible to write good Swing apps. But most I have personally used were slow and needed lots of memory. I doubt that it's just my bad luck and I missed all the really good ones, so I think there is definitly room for improvement. I can't help but see a better Java UI library (that is more Java-like than SWT) as a win for both developers and users. Of course, if anyone could write non-sluggish Swing GUIs, your team would loose it's competetive advantage, so you might not agree ;-)

  217. Re:Java hype by TheLink · · Score: 1

    For simple-medium complexity programs (the common cases), shorter code can often mean easier maintenance, because in most cases it means the language is well suited to the problem.

    When a language is well suited to a task, the important symbols in a program would consist of mainly standard symbols with fewer custom ones. And you won't need many symbols in the program.

    Symbols = meaning, not programming symbols.

    You could have a language with many standard words for different shades of green. People reasonably fluent in that language can understand fairly quickly which greens they are talking about.

    They can then concentrate on the "real task" like: what to do with the green objects and so on.

    Whereas in a less suitable language you'll have to document/describe your custom definitions of green first, and you can end up with lots of custom definitions. Light granny apple green, etc.

    Very like a data compression problem, and algorithm suitability.

    Why I like Perl is it (and CPAN) is well suited to the common cases I deal with.

    Whereas with Java is I find you often have to create symbols of your own even for typical common cases, whilst they seem to have symbols for uncommon cases. It's not just my common and uncommon since it's in an FAQ:
    http://java.sun.com/products/jdbc/faq.html#1 8

    There are many other examples of such strange pessimizations.

    In the case of large complex programs, they can be so complex it doesn't matter anyway - it'll take very many custom symbols to describe no matter what. So it probably doesn't matter if you're writing it in Java, as long as you can keep things manageable. Apparently you can do this with Java. And many people claim you can't do this with Perl.

    But one would think a language with good Design by Contract features would be better than either in this case.

    Also too often large super complex software is just a result of bad design, not of technical necessity.

    --
  218. Re:Java hype by Jord · · Score: 1
    I would agree with you that Sun should use the GUI talent to write GUIs. However, it should not surprise anyone that this is not the case.

    There are some products out there, written in Swing, where the GUI runs quite nicely. I will agree with you that they are few and far between. What annoys me is when people post on these boards that Swing itself is slow, etc. when the reality is that it is the developers.

    I agree that there should be some magical way to show these developers how to write good Swing code but realistically that is not going to happen. So unless Sun et al is going to educate all of these wanna be GUI developers or rewrite Swing so that anyone with a point and click IDE can design a speedy gui, we are stuck in the middle.

  219. Re:Java hype by TheLink · · Score: 1

    I dunno about you, but Yahoo etc scales pretty well. Uptimes and availability pretty good.

    Linear scalability, failover etc is more about design than about programming language.

    Why would it be so difficult to implement such a design in Perl/PHP? I don't understand why you say you can't share/store session data with Perl or PHP.

    --
  220. Re:Java hype by cyranoVR · · Score: 1

    Besides, you can use HTTP to link diverse systems without using Java's funky protocols.

    Ok why don't you be more specific and give us some examples.

    And please try to make it in the form of
    "I was working on a project where the java code failed/performed slowly/took too long to complete"
    instead of your usual

    "this procedural code block is prettier to look at than this ugly OOP code block."

    Thanks in advance.

  221. C++ cannot target JVM bytecodes by Anonymous Coward · · Score: 0

    That is the entire point. You seem to agree. The JVM is not a language neutral architecture. In the end this will be why it will be surpassed by CLR or some other language framework.

  222. JCP is a closed forum by Anonymous Coward · · Score: 0

    You get to look in, but unless you pay the dough you have no input into the process. This is not open by any definition.

  223. Re:Java hype by Anonymous Coward · · Score: 0

    I'd forgotten about that. What a crummy design decision--why is using the dangerous operation more convenient than the safe one?

  224. Re:Java hype by Tablizer · · Score: 0, Troll

    The sad thing is, I thought the real CS academics would be out pushing LISP or LISP like stuff rather than Java. Then again maybe they've already written the perfect Lisp program already and it's moved to the next plane of existence and created its own universe.

    Give up promoting LISP. It is just too powerful for the masses. LISP is like jacking off: It feels great, but you can't do it in public :-)

  225. Re:Java hype by Tablizer · · Score: 1

    Ok? I guarantee that all of Hewlett-Packard's and Compaq's records do NOT lie in a single server room in a building somewhere, and they do NOT rely on "off-site backups" for protection (although I'm sure they have them).

    In my observation, they usually pick one of the systems, and phase out the other.

    Further, most live backups use database replication, because that is where must of the 'active' info is.

    If you're getting the picture yet, you'll understand that we're talking about really HUGE systems here.

    But Java is being heavily pushed for small and medium stuff also.

    Besides, show me some interconnectivity that Java does better than say Perl or Python or LISP, etc.

  226. Re:Java hype by TheLink · · Score: 1

    I'm not using LISP myself.

    LISP seems well suited for the super smart industrious programmer who writes everything himself because everything else is written wrong anyway (seems a common thing in the Forth world as well). The sort who with just a few lines of code can morph an online shopping lisp app into a vertical market auction site.

    Not me - me lazy and only reasonably smart (so I use Perl and CPAN :) ).

    I figure the main symbols/meanings for LISP are for manipulating symbols/meanings (and lots of them).

    Whereas the main symbols for other languages are for doing supposedly commonplace stuff.

    Thus the resulting pros and cons.

    --
  227. Re:Java hype by Anonymous Coward · · Score: 0

    Ok why don't you be more specific and give us some examples.

    How about you post something that Java can allegedly do better than HTTP and CGI-like scripts.

  228. Re:Java hype by crazyphilman · · Score: 1

    Tablizer said: "But Java is being heavily pushed for small and medium stuff also. Besides, show me some interconnectivity that Java does better than say Perl or Python or LISP, etc."

    Does Perl/Python/LISP support enterprise javabeans, and all the useful encapsulation of functionality they represent? Do they support database transactions (ACID)? Since they're scripting languages and not fully OO, how would an application server do object pooling with them? Or any of the other tweaks that are common in J2EE? One common thing is to put either an EJB or an MTS object between a web server and a database (or some other resource), and use a firewall to limit access based on this. How would you do that using a scripting language?

    --
    Farewell! It's been a fine buncha years!
  229. Re:Java hype by rodgerd · · Score: 1

    I think you've missed my point; the parent was asked what made Java a suitable language for large applications. A big library of code is a dumb answer, because every man and his dog has that.

    If he'd discussed design features of Java *as a language* that make it harder to write unmaintainable code, it would have been a useful comment.

    As for bad perl - well, yes, there's a lot of it out there. Unfortunately, there's now a lot of crapulent Java. I'm currently looking at some commercial products which have been written by the sorts of idiots who can't use an RDBMS properly, so reimplement WHERE, ORDER, and GROUP in their Java code.

  230. Re:Java hype by Tablizer · · Score: 2, Insightful

    Does Perl/Python/LISP support enterprise javabeans

    JavaBeans are Java-specific. Why not LISPbeans?

    Do they support database transactions (ACID)?

    No, but databases do.

    Since they're scripting languages and not fully OO

    Does that mean that Smalltalk is not OO?

    how would an application server do object pooling with them?

    You have not established a need for object pooling. Object pooling might be how java does X, but that does not necessarily mean it is the only way to do X.

    One common thing is to put either an EJB or an MTS object between a web server and a database (or some other resource), and use a firewall to limit access based on this. How would you do that using a scripting language?

    Use something else to communicate thru a fireall. Use XML thru HTTP, for example.

  231. Re:Java hype by crazyphilman · · Score: 1

    In comment:reply format, in response to Tablizer's statements:

    Comment: "JavaBeans are Java-specific. Why not LISPbeans?"

    Response: Fine. Show me some LISPbeans. If they do everything JavaBeans do, bully for you. I wouldn't personally use 'em -- I'm reminded of a quote, "Only effeminate programmers use more parenthesis than code". But, I guess this is a matter of taste. For the record, usually I use COM/DCOM/COM+. This is a non-java technology, btw.

    Comment: "No, but databases do"

    Response: You misunderstood completely. Yes, databases support transactions. However, using a transaction server you can handle transactions in code and handle errors much more gracefully. But I'm not going to teach you how to do that for the sake of this weird argument.

    Comment: "Does that mean that Smalltalk is not OO?"

    Response: No, it doesn't. But so few people are using it that I basically ignored it. Smalltalk, yikes. What do you drive, an Edsel?

    Comment: "You have not established a need for object pooling."

    Response: Because I thought you would understand the need. Object pooling is used to speed up response. A pool of objects is kept in memory so that new requests can be served without having to copy a new object into memory, initialize it and so on. It speeds things up. Does this clear the need up?

    Comment: "Use something else to communicate thru a fireall. Use XML thru HTTP, for example."

    Response: Again, you misunderstand. The IDEA is to have a nice little chunk of executable code which encapsulates an entire piece of your functionality, and which in theory has already been thoroughly debugged. You're connecting to a binary object which performs some task for you. You can simulate this with a script, but it still won't be quite as good (fast, secure, etc). And, you're going through your transaction server's interface, letting it handle transactions and object pooling, and so on. Another issue is, once you've solved something with object A, you can reuse object A in other projects without copying it or moving it anywhere. There's a lot of flexibility in this approach.

    Now, this is getting a little silly. Either you don't understand the issues at all or you're trolling (I've suspected this is the case for a while now, but I've given you the benefit of the doubt). Maybe we should just "agree to disagree" and let the whole thing drop.

    --
    Farewell! It's been a fine buncha years!
  232. Re:Java hype by thelen · · Score: 1

    The guiding principle of Perl language design is to borrow whatever works from other languages. Rather than a regimented and legislated design like Java or Eiffel, Perl revels in its own freedom. It is ecclectic, and it does lack orthogonality in more than a few respects, but it has supported full object-oriented programming since version 5. Perl 6 will be much more amenable to academic types as a fresh rewrite of the language according to more standard "principles".

    Finally, even Java Junkies runs on the Perl/DBI/MySQL Everything Engine.

  233. Re:Java hype by Tablizer · · Score: 1

    Show me some LISPbeans. If they do everything JavaBeans do, bully for you. I wouldn't personally use 'em -- I'm reminded of a quote, "Only effeminate programmers use more parenthesis than code".

    LISP is far more flexible a language than Java. You can bend it to be just about any paradigm. You can write your own control constructs (like IF statements, loops, etc.) But, I don't want to get into Yet Another Language War.

    But so few people are using it that I basically ignored it. Smalltalk, yikes. What do you drive, an Edsel?

    You seem to be thinking that New == Good. I will leave it to Smalltalk fans to defend.

    The IDEA is to have a nice little chunk of executable code which encapsulates an entire piece of your functionality, and which in theory has already been thoroughly debugged.

    Functions that act on databases can do the same thing, and my interface does not have to replicate many of the "collection" operations like add, delete, find, sort, save, etc. because it processes a referenced collection (DB) instead of having to manage it from cradle to grave like "pure" encapsulation dictates. But, this is Yet Another Paradigm Battle that cannot be solved in a few paragraphs.

    You can simulate this with a script, but it still won't be quite as good (fast, secure, etc).

    Fast? Java is rarely praised for its speed. The best it can do is "good enough". (Not that I dwell on speed like some clock-watchers, but you brought it up.) Secure? Well this mostly depends on the API's and libraries IMO, not the language.

    Anyhow, there are many ways to slice a cat. Sun's Java is only one vision.

  234. Re:Java hype by crazyphilman · · Score: 1

    Enough. Obviously nothing I tell you will have any effect. Continue to use your quaint, antiquated tools if you wish. I am not evangelical; I couldn't care less. But this is going to go on forever, and I have work to do.

    Let's agree to disagree.

    --
    Farewell! It's been a fine buncha years!
  235. Re:Java hype by iion_tichy · · Score: 1

    Whereas with Java is I find you often have to create symbols of your own even for typical common cases, whilst they seem to have symbols for uncommon cases. It's not just my common and uncommon since it's in an FAQ:
    http://java.sun.com/products/jdbc/faq.html#18

    I can understand why there is no getRowCount Function, though. It really is a massive performance issue. Or am I mistaken that to get the count of a normal result set, you need to read all the rows? Meaning that would be an issue of the databases and SQL, not of Java. So Java doesn't decide for you if you'd rather step to the last row or make another query with SELECT count(*) to determine the number of results. It might depend on the database used or the specific query which version works faster?