Slashdot Mirror


Trouble Ahead for Java

Jeremy Geelan writes "The editor-in-chief of the world's largest journal devoted to Java wonders whether, with the arrival of Microsoft's C# programming language on the scene, Java perhaps has only 5 years or so left to live. Javaland has erupted! This is a little like Bill Gates wondering out loud whether to send Scott McNealy a Christmas card. But is Alan Williamson right? Read this short article and decide for yourself."

17 of 670 comments (clear)

  1. Printable Version by The+Slashdolt · · Score: 4, Informative

    All pages on one page here

    --
    mp3's are only for those with bad memories
  2. Re:Yuck by ckuske · · Score: 2, Informative

    Take a look here, it's new in JDK 1.4

  3. server seems to be dying by CmdrTaco+(editor) · · Score: 3, Informative
    Just in case it gets fully /.'ed:

    There May Be Trouble Ahead
    by Alan Williamson

    As Nat King Cole famously sang, we have to "face the music and dance..." This month's editorial is coming to you with a reader beware warning!

    I've been engaged in some great debates over the last month on a variety of topics, but the one that has caught my interest is the old chestnut regarding the longevity of Java. Is it here to stay? If not, how long do we have? Quite rightly, it's being talked about and I've had the good fortune to brush shoulders with a number of big names in our industry who have given me their perspectives on the whole debate. I have my own feelings about where Java is headed and I do believe that if, as a community, we don't get our act together, we may have only five years left at the most. After talking to my counterparts, it would appear I'm being overly generous with five years.

    What's happening? Well, it's our old friend C# and its relentless march toward the development community. Setting aside the old argument that due to Microsoft's dominance it may well win the day, it's interesting to look at other reasons why C# may win the battle. Let's blow away some misconceptions that you may or may not be aware of regarding this new kid.

    Myth #1: C# is a Windows-only technology.
    You could be excused for believing that, but did you know there's a major movement in the open source world to port the CLR (Common Language Runtime, i.e., their JVM!) to operating systems other than MS Windows? Linux, to name one. Imagine for a moment being able to run your .NET services alongside Apache on a Redhat box, seamlessly integrating into the rest of the network. This alone would be a major blow to server-side Java. It's also a subtle way for Microsoft to unofficially support the growing number of Linux seats without losing face (read www.halcyonsoft.com/news/iNET_PR.asp).

    Myth #2: C# is an inferior Java clone.
    This is the most dangerous one and the one you probably tell yourself in order to keep the scales tipped in Java's favor. The truth is, it's not an inferior clone; it's a different clone, with many arguing that the differences are minute to the majority of the developer community. It will be frighteningly easy for Java developers to move over to C# with no real headaches to contend with. I suspect this was always on Microsoft's mind when developing the language (read www.prism.gatech.edu/~gte855q/CsharpVsJava.html).

    Myth #3: C# is for developing Web services only.
    Most definitely not, and I have heard this one retorted back to me on a number of occasions. Ironically, this is the one area that could really hurt Java Ð on the client. As you know, Java has not made any significant headway in this space due mainly to its awfully slow Swing implementation. While the recent release of JDK1.4 has brought significant performance gains, it's still nowhere near the speed of its native Windows applications with respect to fast, snappy responses (although it must be said, the speed of a Swing application on a Mac OS-X does show what could be achieved). C# is the new building block for Windows applications, the next VB! And we know how many applications popped up when VB hit the market (read www.c-sharpcorner.com/WinForms.asp).

    Okay, how many of you think I've abandoned all hope for Java and have gone to the dark side? I suspect some of you are questioning my loyalties at this precise moment, wondering if I'm fit to occupy my role as EIC. Well, don't panic, I'm merely being a realist and looking at it from all angles. You'd be the first ones to complain if I buried my head in the sand and just ignored the threat. We have to look at this together and come up with a strategy that will enable us to effectively take on C#. We'll be getting a lot of heat from all over and we need to be armed with the information and prepared to go back to the drawing board and reeducate the masses. Sadly, they are being led a merry dance by Pied Piper Gates.

    Allow me to cite you an example of such blind ignorance and if this doesn't scare you, then I don't know what will. I was recently involved with the Scottish government, discussing technology and what have you, where naturally the topic of Microsoft was high on the agenda. Excusing the fact that these people took a certain pride in believing they knew what was going on and loved name-dropping, the phrase that caught me off guard was the following: "Java? No one is doing that now. Microsoft is no longer supporting it."

    Wow! Talk about a major miscommunication. And this from someone who controls budgets for the technology sector in Scotland. Ironically, I believe he really thinks he has his finger on the pulse of technology. It's sheer ignorance like this that scares me the most. Microsoft has successfully planted and nurtured the seed in people's heads that just because it isn't supporting Java in Windows XP, Java is dead. I have to admit I was taken aback and quite flabbergasted when I heard that retort. I really didn't know where to go with that. So much background information was obviously missing that I wasn't too sure if I would come over as patronizing and whether, ultimately, they would understand.

    Sadly, this is not an isolated incident. Ever since I started writing about this topic in my editorials, I've been hearing stories from you regarding similar misconceptions and it scares me. We have a beautiful language here in Java; it has achieved industry-wide support and is pushing forward with great velocity. What can we do to support it?

    You do realize we need an anthem. All great causes have an anthem. Something for us to get behind and sing!!! Suggestions gratefully received. We need a Java song!

    Until next month...

    Author Bio
    Alan Williamson is editor-in-chief of Java Developer's Journal. During the day he holds the post of chief technical officer at n-ary (consulting) Ltd, one of the first companies in the UK to specialize in Java at the server side. Rumor has it he welcomes all suggestions and comments.

  4. Re:Where are the apps by Anonymous Coward · · Score: 1, Informative

    :cough: Dumbass :cough:

    eBay uses latest Websphere which uses Java

  5. Karma mirror by TheFlu · · Score: 3, Informative

    Looks like the site is starting to bog down, so here's a mirror if need be.

  6. Not a beta, -1 wrong by Smallest · · Score: 5, Informative
    VS.Net has been released for months now. In fact I have a copy sitting on my desk right now. C# is included, as is VB.Net and VC.Net.

    You can get a copy of the source to a CLI implementation which also includes a C# compiler that can run on XP and FreeBSD, here.

    From the link:

    The Shared Source CLI goes beyond the printed specification of the ECMA standards, providing a working implementation for CLI developers to explore and understand. It will be of interest to academics and researchers wishing to teach and explore modern programming language concepts, and to .NET developers interested in how the technology works.

    Features
    The Shared Source CLI archive contains the following technologies in source code form:

    An implementation of the runtime for the Common Language Infrastructure (ECMA-335) that builds and runs on Windows XP and FreeBSD Compilers that work with the Shared Source CLI for C# (ECMA-334) and JScript

    Development tools for working with the Shared Source CLI such as assembler/disassemblers (ilasm, ildasm), a debugger (cordbg), metadata introspection (metainfo), and other utilities

    The Platform Adaptation Layer (PAL) used to port the Shared Source CLI from Windows XP to FreeBSD

    Build environment tools (nmake, build, and others) Documentation for the implementation

    Test suites used to verify the implementation

    What can I do with the Shared Source CLI?
    There is a wealth of programming language technology in the Shared Source CLI. It is likely to be of interest to a wide audience, including: Developers interested in the internal workings of the .NET Framework can explore this implementation of the CLI to see how garbage collection works, JIT compilation and verification is handled, security protocols implemented, and the organization of frameworks and virtual object systems.

    Teachers and researchers doing work with advanced compiler technology. Research projects into language extensions, JIT optimizations, and modern garbage collection all have a basis in the Shared Source CLI. Modern compiler courses can be based on the C# or JScript languages implemented on the CLI.

    People developing their own CLI implementations will find the Shared Source CLI an indispensable guide and adjunct to the ECMA standards.

    -c

    --
    I have discovered a truly remarkable proof which this margin is too small to contain.
  7. Re:Or not by W2k · · Score: 3, Informative
    Blockquoth the poster:
    What does C# have? Nothing yet but a BETA.
    The article was all about C#-related myths, but you seem to have found one which the author missed. C# has been out of beta for a while now, I think Visual Studio.NET (which includes Visual C#.NET) was released in february, and I'm using it for some minor programming work already (not C# - just C++ for now). So that it would still be in beta is, to put it simply, not true.
    --
    Quality, performance, value; you get only two, and you don't always get to pick.
  8. Re:Myths #6, #7, #8 by M$+Mole · · Score: 2, Informative

    Myth #9 - .NET doesn't support pointers

    Try looking at the language spec for C# before you make comments like this. If you mark your code as unsafe, you can use all the pointers you like...you can create stack-arrays...just about anything you want.

    --
    Karma: Non-existant. Due mostly to the fact that you smell funny and nobody likes you.
  9. Re:Heck Yes! by Anonymous Coward · · Score: 1, Informative


    Java is not an open standard

    Then what do you call this?

  10. Take the source with a grain of salt. by Tank · · Score: 2, Informative

    IIRC, Java Developers Journal has very close ties to it's older sister publication Windows Developer Journal, and receives much of it's funding from none other than....

    <drumroll/>
    Microsoft
    <cymbal type="crash"/>

    With that in mind, it's not surprising that the editor has such dire predictions since you can guess who signs the checks.

    Note, I'm not bashing C#. The language is so similar to Java that you can certainly find good things in it, but predicting that MS will port their runtime over to a large number of other platfoms might not be the smartest bet.

  11. Re:Not likely :) by pmz · · Score: 2, Informative

    I'm not sure there is a "pure OO", since there are so many variations of OO over such a long history. There are general information-modeling languages, such as EXPRESS, middle-of-the-road programming languages, such as C++, limited but useful programming languages, such as Java, and very limited languages, such as C, Pascal, etc. All of these languages exhibit OO-ness, but there isn't a clear time when OO suddenly sprang into being.

    There may be a paper somewhere that began the OO buzz, but OO really started when philosophers began classifying reality (this may even have occurred before the 1970s!).

  12. Re:Not likely :) by Osty · · Score: 2, Informative

    (emphasis added by me)


    To be Pure-OO, everything must be an object and derived from one single base type -- that is not the case in Java because of the primitives (int, byte, etc).

    Egads, I hope not! That's the sickest, most incorrect thing I've ever heard. That is extremely fragile. What happens if you or someone else adds a virtual/abstract method somewhere up the inheritence tree? You now have to either implement a default (thus making it no longer abstract) in the class where the new method is added, or at least in any classes directly derived from that one. Worst-case scenario is that all inherited classes will need to implement that new method. This is bad. Not to mention that it's simply poor design (don't believe me? go read Design Patterns and see for yourself -- you're making arbitrary relationships that have no reason to exist).


    The only reason I can see to justify the "everything derived from a single base type" methodology would be for implementing things like generic containers. Obviously, Java must work this way because it doesn't have any concept of generic programming (C++ templates, for instance -- there are other ways to implement generic programming concepts without requiring everything to derive from a single class, but I'm not going to go into all of that now). In other words, I wouldn't really call Java "Pure OO" (whatever that means).

  13. I'm beginning to think... by glassware · · Score: 5, Informative
    that Microsoft has discovered the key to getting good press on Slashdot. What if some of the unusual articles that have appeared recently are coming (whether directly or indirectly) from Microsoft PR?

    By Way Of Example: This article, the strangely prophesied Unix Isn't Dead, and this booster for the next version of Windows.

    Although I might be paranoid to wonder about this, it would be a pretty impressive use of grassroots resources. It seems like what they're doing is writing articles that cast doubt on the official Microsoft position. These articles naturally become (in a free spirited discussion site) a thread with some people defending MS and some people attacking it, which provides an excellent position for posting Microsoft's stronger arguments which then reach open-minded developers.

    Anyways, it's an amusing thought. :)

  14. Re:Not likely :) by Ian+Bicking · · Score: 3, Informative
    To be Pure-OO, everything must be an object and derived from one single base type -- that is not the case in Java because of the primitives (int, byte, etc).
    I don't think that's true at all -- OO can look very different while still being OO. SELF, a very OO system (and a predecessor to Java) had no classes -- you could use the class pattern, but the class was not fundamental the way it is in Smalltalk.

    Lisp OO systems are even more different, as they have no methods, but they deal with base types just fine. Instead of methods they have functions, with overloading similar to C++ -- except, unlike C++, all type checking and dispatching is done at runtime, not compiletime. In fact, this isn't that much different from other OO systems -- they all boil down to calling a normal function, where that function is determined by the type of one or more of the arguments.

    The problem with Java is that it is statically typed. Whether dynamicism beyond static typing is necessary for OO is less clear, but Smalltalk is more dynamic than Java in more ways than just typing -- it also makes things like proxy classes very easy (also used heavily in Objective C). But that's just cool, I don't know if it's necessarily OO.

  15. Java's strength is nowhere near a Windows desktop by pbranes · · Score: 2, Informative

    Java does not belong anywhere near a Windows desktop when actually running programs (not just coding/testing). Java belongs on a server. plain and simple. On the desktop, Java is slow - no, Java is *really* slow. Other programming languages (i.e. VB) are slow, but they provide an easy way for people to make simple applications that can look professional. Java does not provide this. Therefore Java's slightly higher knowledge requirements and slowness make it unsuitable for the desktop. However, Java's strength is running on a server in a JSP environment. This is because Java has so many tools built in for networking (no more C style sockets, yay!!) that a (relatively) few lines of code can produce a very powerful Internet program that is fairly safe to run. I believe it is only hurting Java's image to even pretend that it can function as an application base for desktop applications. Sun should drop all of that - including Swing - and focus on enabling network technologies such as database interfaces and web services where the end user never even knows that they are being fed by Java.

  16. Re:It's the tools by Anonymous Coward · · Score: 1, Informative

    The .NET framework SDK is free, just like the Java 2 SDK.

    Anything you can do in Visual Studio.NET, you can do from the command-line and Emacs.

  17. Re:XP quote and more by alext · · Score: 3, Informative

    This is an exaggeration. Thousands of developers use JBuilder all day, and that is built on Swing. I switched to Eclipse, which uses SWT, and noticed no difference in GUI performance at all - they're both perfectly OK.