Industry Leaders Discuss Java Status Quo
prostoalex writes "JavaPro magazine published a wrap-up report on Java discussions at the recent JavaOne. If you missed JavaOne, the video Webcasts of McNealy, Schwartz, Gosling et al. are available from this site. The round table mentioned above gathered people from Sun, Oracle, Borland, Novell, Motorola and others. The discussion topics included: Java vs. NET, integration issues, the impact of open source and top problems that Java is facing today."
I will relate to you my experience and the largely subjective reasons I ended up moving towards Java. I am still new at it, and open to other tools- but this is where I am at right now.
/. I wouldn't know what Python is.
I'm not trying to defend my choice but rather- just answering your question by describing what happened to me.
All the code I had written outside the classroom- prior to a couple months ago was written in VB6. That is what I get paid to do. As I've learned more, read more, and dealt with things like MS licensing for a company app that exceeded the cost of the server it ran on by a large margin, I've decided that I want to move to tools that don't leave me depending on MS.
I took a c++ class at a community college- I learned how to write stuff that ran from the command line. It was cool but I wanted to see the kind of progress I had working with VB. Writing GUI based apps in C++ was in a word daunting.
At the same time, working on a project to move a group of people at my company off of windows to linux, I needed to start working with an App written in Java. I found that I could do GUI work that ran on linux and windows with the same code.
Yes it took me a few tries to get things to run on each system. But I only had to figure it out once.
To be frank- and this may get a negative reaction- but if I didn't read
Java is accessible, launches you quickly into results that are enjoyable and runs on both platforms without too much effort.
And once again my disclaimer-- I'm not interested in arguing why Java is or is not better. As someone new looking to move away from something that has grown undesirable- Java has attracted me the most. This article encouraged me - because my one concern was- "will java be around for a while". I think so.
It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
[background: I work in technology for the financial centres in London]
None of these are really technical reasons for Java being good at anything, but the combination allows enterprises to hire people easily, not have to cross-train them, and to get products out the door (usually within their own environment).
None of the places I've consulted at use Java extensively on the desktop. Mostly it's used for back-end work. Front end is Microsoft / web, with a little Swing occasionally.
Java isn't slow; Java is a language.
.NET addresses this by letting you pre-compile CLR code into binaries; that doesn't make the code run faster, but it makes programs start up faster.
No, Java is a platform with multiple implementations of the compiler/JIT and (effectively) a single implementation of the libraries.
Java compilers/JITs achieve very good performance, having little overhead compared to analogous C code.
But the Java platform falls short in several areas.
First, the VM has an enormous memory footprint, and it starts up very slowly. VM sharing is supposed to address this, but it hasn't materialized.
Second, Java's native code interface (JNI) is inefficient and Java cannot efficiently access native data structures. That makes it difficult to reuse existing, mature C/C++ libraries, and to interface efficiently with operating system facilities.
Third, Java's libraries are not designed for speed: their APIs impose a lot of overhead, and the actual implementations aren't very good either. Also, Java's libraries are designed for generality first, and speed and high-quality cross-platform support distant seconds (things like Java2D just don't run very well on all platforms).
Sun JRE is slow. The JVM runs as another layer on top of the OS, so of course it will be slower than if it were native to the OS. All Sun has to do is make a JM (Java Machine) chip that can be put into motherboards to do the processing at the hardware level, not hardware-os-software level.
Raw CPU performance is not the issue. Java code runs very fast in Sun's current implementation. A Java native chip would not help at all (and would be impossible to make succeed in the marketplace anyway). The problems with Sun Java performance are platform design problems. In a sense, Sun's focus on CPU performance has distracted them from addressing the real performance problems.
Java shines in problem domains where you have a long-running service that needs to be secure, robust, scalable, and quickly mutable to changing requirements. If you don't live in that world, your confusion is understandable. Your post is not too different from usenet posts back in the day where Mac/Windows users didn't understand the appeal of unix. From their perspective, nobody used unix and it was extremely unfriendly. What they didn't know was that sometimes large organizations need to create large, custom internal systems that live long and adapt quickly. Java is no panacea there, but it's better than the alternatives.
The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...
That quote does not imply that C# is even starting to catch up with whatever lead Java has in developer base.
I think Java has many flaws and weaknesses, but I also think it has more than delivered on its goal to be the successor to the platforms that preceeded it.
Larry
Turns out that Java 1.5 will have these features and more - one thing I am really looking forward to is generics.
The final advantage of C# over Java was that a C# program looked like it belongs on Windows - same widget set, same "feel". This is a bigger deal than most people realize. Windows users grow accustomed to doing things a certain way, and they don't like it when you try to impose something different on them. Swing just doesn't cut it in this regard.
- Enterprise Applications - The vast majority of the performance costs of Java occur at start time, when HotSpot is just starting up. Once you get the app up and running (like, for example, on a server), the difference in performace is usually negligable. This is especially true if you are a decent Java developer and understand what Java does well and what it doesn't.
- Embedded devices - There are hundreds of millions of Cell Phones, PDA's, and smartcards out there today that are running Java. Each make and model can have a different processor, memory size, display, etc...but your Java application will run on all of them.
- Web-Deployed applications - The ability to push an application out onto the web via a Java Applet or Webstart application, and have it run on every machine in your company, can save millions of dollars when deploying to a large orginization. Java is able to do this in a way that is reliable and secure.
Are you going to use Java to write a Windows desktop application? Probably not. But how many new Windows desktop apps are there left to write? That's why there are more developers using Java than any other language.(sun won its suit against microsoft that it was unfairly squeezing out the java vm - then promptly sued microsoft for posting the microsoft jvm on windowsupdate.com because the license from sun didn't explicitly allow that. they won the suit and for some time windows users just couldn't get their hands on a vm. and if that doesn't decimate any gains from using java, i don't know what does)
What are you talking about? Windows users have always been able to get their hands on a JVM, just not the Microsoft one because of the lawsuit. Nothing stopping users from downloading one of the many other implementations of the JVM on Windows.
I wear pants.
proof, n. A demonstration that a conclusion is implied by certain premises and axioms.
I'm personally a little tired of the argument that Java is bad because its not open source. While Sun's implementation of the JVM is closed, Java as a language is light years from being a closed source, completely under Sun's control kind of thing.
1) JVM is an open specification (how you implement it and whether that is open or closed is up to you) There are many JDK's/JVM's that you can use to run Java programs other than Sun's (IBM, Kaffe, or whatever the open source one is (and I'm sure there are more than just that, etc)
2) You get the source code for all of the classes/libraries that come with java when you download Sun's JDK. These include the core classes like java.lang.String, etc, etc. The only thing missing, as stated above is the source code for the compiler/interpreter and other tools.
3) There are open source JVM's (i.e. kaffe, etc) although I've found them to be lacking, but they'll get there
So the argument that Sun has control of Java is moot, you can build/run/install and entire Java application without ever touching Sun tools.
Is Java/JVM totally free? Depends who you ask. Its free/open enough for me, personally, but I can see how some open source fanatics can get their panties in a bunch over this.
Also, unlike M$ products, I think the design of Java's classes shows insight, and well thought out design, so in a way I for one am for Sun keeping a bit of control over the language and "core" classes, but thats my opinion of course.
-- A computer without COBOL and Fortran is like a piece of chocolate cake without ketchup and mustard