Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Java Programming Software

Java SDK 1.5 'Tiger' Beta Finally Released 602

kingkola writes "Finally, after about two years of development, the Beta for Java SDK 1.5, aka Tiger, has been released. Features added in this edition include generics support, autoboxing of primitives, syntactic sugar for loops, enumerated types, variable arguments, sharing of memory between multiple VMs and a bunch of other bugfixes, enchancements, etc."
This discussion has been archived. No new comments can be posted.

Java SDK 1.5 'Tiger' Beta Finally Released

Comments Filter:
  • by alenm ( 156097 ) on Thursday February 05, 2004 @08:43AM (#8188135)
  • an annoying quirk (Score:4, Interesting)

    by Dogun ( 7502 ) on Thursday February 05, 2004 @08:50AM (#8188174) Homepage
    A friend of mine is bitching about this: if you type a list, say ArrayList, you can't use that as an argument for a function that takes a ArrayList. He's tried casting it, it just doesn't like it. Anyone else seen something like this?
    • Re:an annoying quirk (Score:3, Informative)

      by severoon ( 536737 )

      I'm guessing that you dropped some text between angle brackets, and what you meant to say was something along the lines of:

      ArrayList<Integer> s = new ArrayList<Integer>();
      ArrayList<Number> t = s; // does not compile

      It is indeed true that, though s contains only Integers, which are all indeed Numbers as well, you cannot make this assignment. The reason is that, though Integer extends Number, the new types you've created (ArrayList<Integer> and ArrayList<Number>) using the

      • Re:an annoying quirk (Score:5, Informative)

        by derkaas ( 654904 ) on Thursday February 05, 2004 @11:30AM (#8189582)
        You can, however, make use of wildcards to define a covariant inhertiance relationship between ArrayList<Number> and ArrayList<Integer>. We can reconstruct your example to create this relationship:
        ArrayList<Integer> s = new ArrayList<Integer>();
        ArrayList<? extends Number> t = s; //compiles

        Check out this paper [bracha.org] for information about this other kinds of variance available in Tiger.

      • Re:an annoying quirk (Score:3, Informative)

        by rreyelts ( 470154 )
        While that is true, Java 1.5 has a solution for this called variance - based on very recent programming language research:
        ArrayList<Integer> s = new ArrayList<Integer>();
        ArrayList<? extends Number> t = s; // This does compile
        This capability is something you won't find in any other mainstream language, yet. C++ may never get this kind of capability.
    • by Jerk City Troll ( 661616 ) on Thursday February 05, 2004 @04:38PM (#8193748) Homepage

      I've seen some really complex explinations in this thread. It's really not that complicated. If an argument is of a certain type, the supplied value must be of that type. End of story.

      So, let's think about inheritance. All ArrayList objects are List objects. However, not all List objects are also ArrayList objects. If you declare a variable as List, all anyone knows is that it is simply a List object, even if its initialized as ArrayList. You can, however, test for the type of the value ( getClass() [sun.com].getName() [sun.com] , instanceof [sun.com] , etc.) and then cast appropriately. So, if you are certain that your List variable contains a value of type ArrayList, you can down-cast it to ArrayList and pass it in.

      By the way, at the risk of being too specific, here's a pointer when you're using the Java Collections Framework [sun.com]. Usually, you want to use the interface classes for your arguments and return values. Use List, Set, etc. for arguments and returns, not their implementations. The whole point of an interface is you don't care how it's implementing, you just care about what is implemented. In certain cases, you do care about the implementation. For example, TreeMap sorts the entries by key, where as LinkedHashMap guarantees the results will be kept in the same order as they were added. These properties are useful in some cases, but in general, use the base class whenever possible.

      So, in summary remember or learn inheritence rules and the distinction between the type of a variable and the type of a variable's value.

  • by goodbye_kitty ( 692309 ) on Thursday February 05, 2004 @08:52AM (#8188180)
    Yay, finally some proper java support for IPv6 in windows. Im not an IPv6 zeaolot or anything but its great to be able to write (careful) java.net code using generic InetAddresses and be pretty sure that it will work regardless of which version of IP your network is using.
    • by Anonymous Coward on Thursday February 05, 2004 @11:07AM (#8189285)
      Why finally? For Java to support IPv6 on Windows, MSFT had to support it first and that didn't happen until Windows XP SP1.
      Now that being said, the really cool part about Java supporting IPv6 on windows is that it actually makes it much, much easier for developers to add support for IPv6 on Windows. You see, Microsoft didn't provide a dual stack implementation which means an IPv6 socket can not talk to an IPv4 host. It's stupid and contrary to what the RFCs strongly recommend. So if you're a .Net developer and want to support IPv6, you're in trouble as you have to rewrite your application to handle both kind of sockets, not too hard for client side, much more of a pain on the server side.
      Now, with Java, none of that, a Socket is a Socket and that's it. To make it better, chances are your Java application doesn't need to be modified, or even recompiled! Imagine that: your application was already IPv6 enabled and you didn't know it.
  • About time too (Score:5, Interesting)

    by DrXym ( 126579 ) on Thursday February 05, 2004 @08:56AM (#8188212)
    This finally puts Java the language onto the same level as c#. While most of the syntax changes amount to sugar (the compiled code being the same), it is still welcom to see a proper enum at last. And things like generics should make it considerably less tedious to walk through collections (a bane of Java development).


    Another change that caught my eye was a skinnable theme for JFC called Synth. I wonder if this will help Java capture some of the kewl market for media players etc.


    I also see the beta is being made available for 64-bit Linux.


    As a platform, Java is still miles ahead of c#. But I sometimes wonder if the message is lost amongst all the specifications and implementations of specifications. The .NET strategy has gotten some ill-deserved 'buzz' from managers who've heard the spiel without quite understanding the implications if they go that route (i.e. lock-in). Someone in Suns marketing department should produce a massive wallchart detailing everything Java can do, every major solution for it and arrows showing how they all join together and then mail it out to every CEO / CTO in the country.

    • Re:About time too (Score:3, Interesting)

      by Seahawk ( 70898 )
      The .NET strategy has gotten some ill-deserved 'buzz' from managers who've heard the spiel without quite understanding the implications if they go that route (i.e. lock-in).

      How is java less lock-in than ,NET? Both are closed products with free alternatives. Java has Kaffe, lots of small jvm's and classpath - .NET has Mono.

      In my eyes you are about equally locked in - but people tend to hate .NET just because its MS.

      My view is that c# is a bit more "clean" as a language, but the classlibrary is much more
      • Re:About time too (Score:5, Informative)

        by jlusk4 ( 2831 ) on Thursday February 05, 2004 @09:13AM (#8188296)
        The Java language, VM, libraries and protocols (RMI, J2EE) are all fully spec'd out. There are *no* proprietary pieces the implementation of which is forbidden by Sun. 3rd parties can implement to their heart's content.

        On the other hand, MS always, always, always seems to take care to leave some proprietary poison pill in their work, so you can implement 99% of their offering, but w/out the last 1%, your offering is worth substantially less (if anything at all).

        MS-Kerberos is my favorite example: all these bytes are yours, except these two over here. Touch them not.

        I think Mono is another case in point: it's an implementation of C# and the VM (yes?) but the .NET libs are off-limits, are they not?

        (Consider me trolled. Oh well, it's been a while since I've bitten any hooks.)

        John.
      • Re:About time too (Score:3, Insightful)

        by Spoing ( 152917 )
        1. How is java less lock-in than ,NET? Both are closed products with free alternatives. Java has Kaffe, lots of small jvm's and classpath - .NET has Mono.

        While in general I agree -- the core implementations of both are closed source -- the two are entirely different when motivations come around.

        Sun: Motivated to create a Java developer base and sell related goods on various platforms.

        Microsoft: Motivated to create a C# developer base and sell related goods on Microsoft platforms (Windows NT and Windows

      • Re:About time too (Score:5, Insightful)

        by DrXym ( 126579 ) on Thursday February 05, 2004 @09:22AM (#8188341)
        You're not locked in because there are multiple JVMs and multiple implentations spanning multiple architectures and devices from multiple vendors. You are not compelled to use Sun hardware, nor Sun software if you want to use something else. Many of the core technologies are open specifications with open source implementations.


        Thus you have a lot more choice. You could be using Java on Mac OS X, Tomcat and PostgreSQL to power your website, or you could be using IBM mainframes with WebLogic and an Oracle backend.


        With .NET your choices are made for you - Microsoft. Microsoft software on Microsoft operating systems on Microsoft supported platforms. Mono might be suitable for toy apps (not that Kaffe is much better) but it is never going to implement all of the proprietary things that .NET is comprised of.

        • Re:About time too (Score:3, Informative)

          by Seahawk ( 70898 )
          You actually said my best argument - lets say MS stopped distributing all .NET tomorrow and that Sun did the same.

          BOTH groups would be basicly fucked - there is no REAL port of any of them - and from my point of view, Mono actually looks quite a bit more promising than Kaffe does.

          If you asked me 1/2 year ago, I would definately put my money on java(and I do all my private coding in java - and has done it for the last 6-7 years or so), but now i start to be unsure - not because .NET is a better platform -
      • Re:About time too (Score:5, Insightful)

        by Glock27 ( 446276 ) on Thursday February 05, 2004 @09:30AM (#8188384)
        How is java less lock-in than ,NET?

        Because Java has freely available, industrial strength implementations on dozens of platforms. If you use it, you aren't locked in to deploying on any particular OS or hardware. (BTW, don't forget gcj in your list of "free" alternatives.)

        .Nyet, on the other hand, leaves you with only Windows as a deployment option - it's not at all clear that Mono will be allowed to finish/distribute a complete cross-platform .Net implementation. Many important libraries aren't in the ECMA standards, such as Winforms.

        I hope that helped clear things up...

        • Re:About time too (Score:3, Interesting)

          by Haeleth ( 414428 )
          it's not at all clear that Mono will be allowed to finish/distribute a complete cross-platform .Net implementation

          While the immaturity of Mono is the reason I'm looking into Java rather more seriously than .Net at the moment, I would like to point out that it's also not at all clear that there's anything Microsoft can do to stop Mono.

          Remember that the only potential legal threat to Mono is Microsoft's patent portfolio. But even if Mono is infringing on something - and I haven't seen any evidence that it
      • Re:About time too (Score:5, Informative)

        by severoon ( 536737 ) on Thursday February 05, 2004 @10:20AM (#8188767) Journal

        This is one of the most misunderstood aspects of the C# vs Java debate.

        If you write code in Java, you can run the same compiled class files on any platform. In C#, any code you write MUST run on a Windows-supported platform under Windows, but because every .NET language compiles to the CLA (Common Language Architecture), they are all translated into a single, compatible language before going to bytecode. Meaning, you can interoperate between any .NET language, have C# functions call a C++ function (assuming C++ is a .NET supported language now or someday) and just have it work...no CORBA, no distributed programming, etc. Furthermore, the CLA common language provides stuff like garbage collection so you can neglect free() and delete() in C++ and not worry about memory leaks (just don't compile that code with a non-.NET C++ compiler). The grand vision here is that everyone using .NET is locked into the .NET framework running on a Windows platform. There's nothing open about that.

        sev

        • Re:About time too (Score:4, Interesting)

          by Uksi ( 68751 ) on Thursday February 05, 2004 @11:53PM (#8197994) Homepage
          In C#, any code you write MUST run on a Windows-supported platform under Windows


          That's not correct. Next time, please say "according to blah, ...". For example:


          According to the Mono faq [go-mono.org]:


          Question 58: Can I develop my applications on Windows, and deploy on a supported Mono platform (like Linux)?


          Yes, you can.


          As of today, Mono is not 100% finished, so it is sometimes useful to compile the code with Mono, to find out if your application depends on unimplemented functionality.



          So in short, yes, you can compile C# and C++ to bytecode under Windows and run it under Linux.

          Although what you said about CLA (being able to call other languages' functions) is correct.
  • Code Examples (Score:5, Informative)

    by Dreamland ( 212064 ) on Thursday February 05, 2004 @08:57AM (#8188219)
    Here's a very nice PDF giving actual code examples of the new language features:

    [javasig.com]
    http://www.javasig.com/Archive/lectures/JavaSIG- Ti ger.pdf

  • Saves loads of code (Score:5, Interesting)

    by cerberusss ( 660701 ) on Thursday February 05, 2004 @08:59AM (#8188228) Journal
    What is great about this, is that this saves loads of code. Lots of explicit typecasts can be left out now, there is a very short-handed for-loop, you can import constants, etc. etc.

    I played with the alpha and gave a presentatation about it at my employer. Lots of people were enthousiastic.

    Plug: java-1.5_new_features_en_v2.ppt [vankuik.nl]

    • by gidds ( 56397 ) <[ku.em.sddig] [ta] [todhsals]> on Thursday February 05, 2004 @09:55AM (#8188529) Homepage
      While all of these features make code easier to write, I'm not sure they all make it easier to read.

      I believe that overall, much more time is spent maintaining code than in writing it, and yet languages seem designed mainly for the latter. (Perl particularly!) Some of the changes -- new for() loops, generics -- will improve readability and maintainability too, but I worry that the new imports, and maybe enums, won't. At present, it's fairly easy to look at a small section of Java code and know exactly what it's doing. With no preprocessor, and nice easy scope rules, you can easily tell what names and objects are being used -- that's one of the things I really like about the language. Additional imports, not just of class names but of other identifiers, risks muddying this. Has anyone done much actual work in 1.5 and can speak from experience?

  • Benchmarks (Score:5, Interesting)

    by SashaM ( 520334 ) <msasha@gmai[ ]om ['l.c' in gap]> on Thursday February 05, 2004 @09:08AM (#8188265) Homepage

    Actually, 1.5 beta has been available for a few months now, but the link wasn't on the main java.sun.com page.

    Here are some highly unscientific benchmarks of startup time [sun.com] I just ran on my Athlon XP 2000+ under Mandrake 9.2:

    [sasha@jupiter tmp]$ time -p /usr/java/1.4/bin/java HelloWorld
    Hello World!
    real 0.30
    user 0.22
    sys 0.03

    [sasha@jupiter tmp]$ time -p /usr/java/1.5/bin/java HelloWorld
    Hello World!
    real 0.17
    user 0.16
    sys 0.02

    These are relatively consistent over multiple runs.

  • In Response to C#? (Score:5, Insightful)

    by osewa77 ( 603622 ) <naijasms@NOspaM.gmail.com> on Thursday February 05, 2004 @09:09AM (#8188276) Homepage
    When I first learnt Java, I was so excited about the write once read anywhere functionality but many language features (or the lack thereof?) simply bugged me. Then I discovered C# and was happy to have found a usable Java - until I saw the probs Mono is facing porting .NET, particularly System.Windows.Forms, to Unix ... and the fact that they would always have toplay catch up, with no big company to support them (IBM, Sun and other Linux/Open source backers already have a huge stake in Java)

    When I read about the proposed features for Java 1.5, I knew i could stick with Java for the long term. Good news!
  • by brett_sinclair ( 673309 ) on Thursday February 05, 2004 @09:11AM (#8188286)
    I really like the new language features (and will use them in about 5 years when our server is upgraded :-().

    But Swing is even uglier than before. Metal still looks very old, but now it looks like someone very old with obscene amounts of make-up on.

    The GTK+ look is even worse. It doesn't look like GTK+ at all (I'm not even sure whether it's supposed to be GTK1 or GTK2).

    Worse: font rendering is abysmal. Buttons and menus are barely readable using the GTK+ emulation L&F. The Java VM still doesn't use Xft/Freetype, which pretty much makes the attempt at GTK+ emulation useless.

  • Quick Links (Score:3, Informative)

    by osewa77 ( 603622 ) <naijasms@NOspaM.gmail.com> on Thursday February 05, 2004 @09:15AM (#8188305) Homepage
  • by loconet ( 415875 ) on Thursday February 05, 2004 @09:24AM (#8188357) Homepage
    Here [sun.com] is a more detailed look at what 1.5 has to offer.

    Some of my favorites:

    - Autoboxing and Auto-unboxing of Primitive Types
    - Enhanced for loop
    - Enumerated types
    - Formatted Output
    - Concurrency Utilities
    - Improved Diagnostic Ability
    - Desktop Client
  • by nberardi ( 199555 ) * on Thursday February 05, 2004 @09:40AM (#8188430) Homepage
    I don't want to start a flame war, but do you think that the pressure of .Net pushed some of these features through that Sun seemed to be holding off on for the longest time.

    Such as enums, generics, boxing, foreach loop, etc.

    Just a question that I have had, because I never heard anything about these features comming into Java until after .Net made it's comming out in 2002.
    • by jilles ( 20976 ) on Thursday February 05, 2004 @01:52PM (#8191359) Homepage
      Absolutely, competition is good. On the other hand I think Java itself was a good motivation for developing .Net. I don't think MS would have been as eager to put development and research resources into it otherwise.

      This is what competition is about. MS already has C# 2.0 designed (which sports many of the features introduced/present in jdk1.5) and no doubt they'll start marketing that in a couple of months. It's a technological arms race. Of course the big question is which of the two will make the first move to support the other. My guess is that they will let IBM do the hard work. Already there is some .Net support in eclipse.
  • by UCRowerG ( 523510 ) <UCRowerG@NospAM.yahoo.com> on Thursday February 05, 2004 @09:54AM (#8188518) Homepage Journal
    I know the compile-time checking for things like ArrayList is a good thing, but is there any note on how this may impact things like HttpSession or HttpServletRequest attributes, where different data types are essential?
  • by Doug Neal ( 195160 ) on Thursday February 05, 2004 @09:56AM (#8188539)
    I'm still stuck on 1.3 due to the Blackdown JVM's Debian package not being updated for 1.4. I could do it non packaged-managed, but I'd really rather not...
  • by Arkham ( 10779 ) on Thursday February 05, 2004 @10:15AM (#8188712)
    One of the new features, Class Data Sharing [sun.com], comes as a contribution from Apple. On the Apple Java Page [apple.com], Apple describes this feature as:
    On other platforms, each Java application consumes some system memory, so you might end up using more memory than you need to when running multiple Java applications. Other languages, such as C or C++, solve this problem using what's called shared libraries. Apple developed an innovative new technology that allows Java code to be shared across multiple applications. This reduces the amount of memory that Java applications normally use. And it fits right into Sun's Hot Spot VM, allowing Mac OS X to remain compatible with standard Java. In addition, Apple has given this implementation to Sun so the company can deploy it on other platforms. It's just one example of how Apple supports standards and shares ideas to benefit all.
    Pretty cool stuff, and it shows that Sun does accept changes to Java from the outside that are of clear benefit.
  • by Yoda2 ( 522522 ) on Thursday February 05, 2004 @10:17AM (#8188731)
    This means that the Java RowSet for JDBC is now a semi-standard part (still a sun.* package) of the JDK and no longer requires a Early Access Developer download [sun.com].

    Our open source SwingSet toolkit [sourceforge.net] for making the Swing components database-enabled/aware will now be much easier to install/distribute. Hooray!

  • Sun have been promising generics for Java since 1997, and I have been patiently waiting for it all this time.

    I haven't had the chance to look at C# in detail yet, but it's certainly no co-incidence that these features finally saw renewed activity after C# appeared. So, thanks, MS, for applying a little competitive pressure onto Sun for us :)

    I'm also a little disappointed to see just how similar Java generics are to C++'s templates. I was hoping that we were waiting for a *reason*, and that reason might be because it was a new and interesting approach. But, at least superficially, this looks almost exactly like C++ templates, with all the positives and negatives that go along with that.

  • Where the value is (Score:5, Insightful)

    by lonb ( 716586 ) * on Thursday February 05, 2004 @10:25AM (#8188812) Homepage
    While I see people here immediately start debating who gets credit for various aspects of the language and when things came out first -- in hopes of finding which originator is the more powerful geek (MS or SUN), I think the critical point is being missed.

    Microsoft has it REALLY easy, and is cut way too much slack, when it comes to development environments and languages. They control the operating system and the hardware specifications and compliance. And, they have done so for well over a decade.

    Java is truly platform independent, which is a huge challenge. That challenge was met with a well designed language that operated slowly. However, between 1.4 and 1.5 there are substantially speed increases in the VM which bring it up to par [osnews.com] with the fastest languages available.

    When you think about developing applications you need to consider many things other than pure technology:
    - Who will be around in 5-10 years (both MS tech and Java tech will)
    - Access to developers (while MS is the clear winner in the US, this is not so in other countries, where even gov'ts are against MS)
    - Vendor independence and support (this is clearly in favor of Java)
    ..the list goes on.

  • by tehcyder ( 746570 ) on Thursday February 05, 2004 @11:11AM (#8189326) Journal
    Is it just me who loves that typo?
  • by mark-t ( 151149 ) <markt.nerdflat@com> on Thursday February 05, 2004 @11:24AM (#8189491) Journal
    But the autoboxing thing I just can't abide by.

    It's a convenience, to be sure, but it seems to me that autoboxing is a setup for programmers to make mistakes, as certain classes can get automatically and invisibly created, where before there would have been an error message issued by the compiler. Hopefully there's a command line switch to disable it so that the compiler can still catch those errors.

    Everything else in 1.5 I absolutely love.

  • not enough (Score:5, Interesting)

    by ajagci ( 737734 ) on Thursday February 05, 2004 @11:43AM (#8189731)
    These are language fixes that should have happened years ago. The real question is: why did it take Sun so long? Why is the process by which the Java language evolves so severely broken?

    And many serious problems remain with the Java language:
    • Java genericity has no special support in the runtime, which limits the type safety it can provide.
    • Generics over primitive types are boxed, meaning they are inefficient.
    • Java's native code interface is still inefficient and complex.
    • Java still lacks value classes and operator overloading, making it a poor choice for applications involving numerics or graphics.

    The most serious problem with the Java platform is and remains, however, that it is basically proprietary: all Java 2 platform implementations depend crucially on code licensed from Sun (e.g., there is no independent Swing implementation). Furthermore, there doesn't exist a Java standard that people can implement without having legal constraints imposed on them by Sun.
    • Re:not enough (Score:3, Insightful)

      by jjohnson ( 62583 )
      Sun wasn't working on the language because they were busy building up the libraries--arguably a better choice. Instead of generics and autoboxing, we have J2EE, which (in the right parts) is probably a larger productivity gain. One place Java still has a huge advantage over ASP.NET is the size of the standard libraries/APIs.
    • Re:not enough (Score:4, Insightful)

      by Featureless ( 599963 ) on Thursday February 05, 2004 @01:59PM (#8191462) Journal
      I can understand and respect a firm position on open standards and non-proprietary technologies, and that's fine for some folks. On the other hand, I have no problem with Java's licensing or ownership encumberances, and I know I am not alone. The source is open enough that crucial problems, even in the VM, can be fixed by me (rather than begging and whining and being ignored for years, or writing ugly workarounds). In practice I have no issues at all. Certainly, Java compares favorably to things like .Net on this score.

      Some thoughts:

      Java genericity has no special support in the runtime, which limits the type safety it can provide.

      True.

      Generics over primitive types are boxed, meaning they are inefficient.

      Collections were already boxing primitives. How often do you think this will come up for you in the real world? Can you come up with a convincing example?

      Java's native code interface is still inefficient and complex.

      Funny, I've used it for a few different things (in 1.4) and never found it to be either. But perhaps if you made a more specific complaint...

      Java still lacks value classes and operator overloading, making it a poor choice for applications involving numerics or graphics.

      Pardon my ignorance about value classes; I'm wondering if you can be more specific about when they're really useful and what benefits they have for numerics or graphics?

      And finally, when you say operator overloading, you lose me. My opinion of operator overloading is that it is absolutely bad. Let me be clear. It is always bad, under any circumstances, when used for any reason. It has exactly zero functional value, and, as opposed to other kinds of "syntactic sugar" it has a tendency to make code where it is used with any frequency into a confusing, unmaintainable minefield. When advocating for operator overloading you are basically advocating a programming style with 1 letter method names, only it's worse, because you're limited to a few "commonly used" letters.
      • The grandparent was talking about numeric and operator overloading. It is completely beyond me that a modern language like java does not have one of (a) native numeric libraries or (b) operator overloading to create your own. Have you any idea what an unmaintable mess it makes to be forced to use a lisp style syntax instead of math, or even more errorprone and a hassle, write all the loops by hand?

        In many languages nowadays, be it fortran, c++, perl, python, etc. etc. etc. it is possible to use straight m

  • by occamboy ( 583175 ) on Thursday February 05, 2004 @11:48AM (#8189811)
    We recently switched from Java Servlet development to ASP.NET, and ASP.NET is MUCH faster to develop in. Yes, I know that we're locked in to MS OS and server, but given the incredible productivity increase, this is a small price to pay.

    All things being equal, I'd much prefer to stay away from MS. But ASP.NET is far too superior a way to go.

    It looks like the new Java release finally makes it roughly as good as C# (or Delphi, after which C# is modeled), but more is needed to for the Java world to be as efficient as the ASP.NET world:

    1. A good IDE. In ASP.NET, I can drop components on an HTML form, which bypasses a lot of HTML grief. The entire paradigm is easy-to-use and integrated. In Java, I need to use the comparatively awkward Eclipse or Forte IDEs, muck with Dreamweaver and whatnot - it's a productivity-destroyer.

    2. Servers that are not obtuse. I can get IIS to do anything in about 5 minutes. It takes hours or days to do anything in Tomcat or Resin and Apache. My time is precious.
    • by truthsearch ( 249536 ) on Thursday February 05, 2004 @01:20PM (#8190946) Homepage Journal
      Yes, I know that we're locked in to MS OS and server, but given the incredible productivity increase, this is a small price to pay.

      Vendor lock-in is never a small price to pay. From now on your project will be dependant on one and only one vendor, unless you're willing to completely re-write it from scratch one day. As IDEs evolve much quicker from every vendor except Microsoft, you'll be disappointed when you can't use the future version of Eclipse or JBuilder or whatever when it far surpasses Visual Studio. When a new useful free library pops up for Java, which happens all the time, you can't use it. You're stuck on a new platform with less features, less free tools, and less support for the foreseable future.
    • Yes, I know that we're locked in to MS OS and server, but given the incredible productivity increase, this is a small price to pay.

      As another person has already pointed out, this is never a small price to pay.

      From a technical point, you've tied your entire IS structure to one company. Your innovations, flexibility, and ability to create services for your environment will be dictated by a single company.

      From a business point of view, implementing business critical functions based on a single proprieta

  • by Schnapple ( 262314 ) <tomkiddNO@SPAMgmail.com> on Thursday February 05, 2004 @01:55PM (#8191415) Homepage
    Question about the Java naming conventions.

    It was my understanding that the first versions of Java were called simply "Java". Then at some version (1.2?) they started calling them "Java 2", despite not being 2.0. So, is this 1.5 version still "Java 2" or have we moved on to "Java 3"? (which, as I understood it, was the title likely associated with 1.5)

    • Re:Java 3? (Score:4, Informative)

      by AT ( 21754 ) on Thursday February 05, 2004 @07:54PM (#8195992)
      The Java 1.2 JVM has incompatibilites with earlier versions. That is to say, bytecode compiled with a 1.2 javac wouldn't necessarily run on a 1.1 jvm. So think of it as Java Platform 2.

      Java 1.5 bytecode is fully backwards compatible with 1.4 JVMs and 1.4 bytecode was backward with 1.3 JVMs (asserts would only cause library issues). I'd expect Java 3 to appear only if the JVM bytecode spec changes.
  • by Eric Smith ( 4379 ) * on Thursday February 05, 2004 @02:15PM (#8191692) Homepage Journal
    So why isn't this "Java 3"? There are more significant enhancements between Java 2 1.4.0 and this new 1.5.0 than there were between Java and Java 2 (1.1.8 and 1.2, if memory serves).

    Of course, IMNSHO the whole "Java 2" name was just marketing run amuck. I don't see how it's done anything but cause confusion. If marketing absolutely insisted on having a "Java 2", engineering should have bumped the version number to 2.0.

    I'm not a fan of marketing determining version or release numbers, nor version number inflation, but changing a marketing product name to include something that looks like a version number without having it match the actual engineering version number is obviously bad.

  • by s88 ( 255181 ) on Thursday February 05, 2004 @03:02PM (#8192307) Homepage
    will be code like this:

    Enumeration enum = collection.elements();
    while(enum.hasMoreElements ()) { ...
    }

    Guess what... that is a compile error now. "enum" is a new keyword, and is no longer valid as a variable name.

    Scott
  • by Peter Cooper ( 660482 ) on Thursday February 05, 2004 @04:10PM (#8193367) Homepage Journal
    My beef with Java is that the Sun SDKs are such a pain in the ass to download from a command prompt.

    They use some extremely arcane methods to make sure you have to agree to their licence (which is fair enough) but then once you've started downloading, you can't pause and resume! I even tried their stupid download manager, and it couldn't deal with it.

    For those of us on modems (and have ISPs who boot us off every 2 hours to avoid hogging), this is really annoying. I had to get a friend with broadband to download it, then upload it to my FTP server.. so I can stand a chance of downloading it properly!

The use of money is all the advantage there is to having money. -- B. Franklin

Working...