Java Is So 90s 923
An anonymous reader writes "Some of you may recall last year's Java vs. LAMP Slashdot
flamewar. The fight has now "brewed" (couldn't resist) into the mainstream press at
BusinessWeek." From the article: "Yared says developers far and wide are creating a new generation of Internet-based applications with LAMP and related technologies rather than with Java. Can it possibly be that Java -- once the hippest of hip software -- has become a legacy technology, as old and out of style as IBM's (IBM) mainframe computers and SAP's corporate applications? Mounting evidence points to yes. Reports by Evans Data Corp., which does annual surveys of the activities of software developers, show Java use is slipping as LAMP and Microsoft's .NET technology gain traction."
LAMP or Ruby on Rails? (Score:1, Informative)
Damn shame (Score:1, Informative)
Re:Stupid new buzzword (Score:2, Informative)
Java 90's!!! Wake Up (Score:1, Informative)
Today first experience with the Internet is done mainly through a cellphone. By 2007 more than 99% of CellPhones will have Java for running personal, business, games apps.
Cellphones running Linux will use Java as well, what is expected, most of the applications developed in Java.
LAMP is a great combination as in every technology it is not a all-purpose pill, sometimes is better than using the Java Framework others not.
The problem with LAMP it is not LAMP, is the pack of Linux Fanatics that think that Linux will solve all academic/corporate/business/personal needs, playing down BSD, Solaris, OpenSolaris, AIX, as real options.
Re:.NET?!? (Score:5, Informative)
Well, I'm not sure what Java's fate is, but while
As far as the CLR vs the Java runtime goes, Java byte code is fairly specific to java. It's possible to create non-Java languages that target the byte code, but it's not particularly practical. The CLR, on the other hand, was designed from the start with the idea of multiple language support [editthispage.com].
It may not seem like a big deal to some, but being able to write more or less equally capable code in VB.NET, C#, J#, C++, Python, or a long list of other languages really does increase adoption.
The CLR affords far better platform specific integration than Java. JNI is complicated and horrible. COM Interop and API invocation in
The security framework built into
The CLR has support better support for a variety of programming constucts, such as generics, than Java does... or, in some cases did but the latest and greatest java releases have done a pretty good job and matching
While both
As far as language comparison goes, it's not really all that useful since the CLR supports pretty much everything you could think of, including a nearly 1 to 1 copy of Java. (J#). But if we must, here is a great, although some what dated, comparison of Java and C#.
Isn't
Not really. It's an evolutionary step. They certainly looked at Java, but they looked at everything. Managed runtimes were not invented by Sun. They've been around for 30 years. Microsoft creating
Re:.NET?!? (Score:5, Informative)
Re:.NET?!? (Score:2, Informative)
Re:The 'P' in LAMP (Score:3, Informative)
If you want to be able to code in the large sense, not specifically for the web, I'd advertise Python. Or Ruby. Both languages are really good to build offline applications, and just as good for online apps (websites or webapps). Clean, powerful, OO-based yet multiparadigm (the languages are OO, but you don't HAVE to use OO).
If all you want is build a quick website, PHP is the easiest but the ugliest.
Perl gives mixed feelings, the syntax is strange, the code (as in PHP) extremely easily turns into a gooey sticky mess (Perl is often described as a Write Only language), the OO is a hack, but Perl is unrivaled for a few hundred lines of heavy string manipulation. Beyond that, it's a pain to keep it readable.
Get a better book (Score:3, Informative)
It takes a lot of practice to be a proficient programmer. Get a copy of Just Java 2 by Peter Van Der Linden. It's probably the best Java book out there and a fun read at that.
Read the book, put in the time and then get a job as a Java programmer.
$35 book + time = $70K per year.
You'll have your money back in no time.
Re:In Related News (Score:2, Informative)
Stats Don't Lie! Java OWNS the current market! (Score:5, Informative)
Here's the spreadsheet that I put together. It's in no way scientific, but it is a good indicator that Java, C++, and Oracle own the programming jobs market.
http://www.timothytrimble.info/ForSlashDot.htm [timothytrimble.info]
If you don't believe me, then do the stats yourself. Go to HotJobs, Monster, Dice, CareerBuilder and find out for yourself. The stats don't lie!
Timothy Trimble The ART of Software Development
Java badly needs a JDK 2.0 (not meaning J2SE) (Score:3, Informative)
Over the years, as new technologies were added, the interpreter and the API were constantly augmented. Basically the new features were slapped on like coats of paint, but it was never reengineered nor refactored. Look how little of the old cruft of 'deprecated' stuff from JDK 1.0 or 1.1 has ever been removed. For example, why does Java still need 3 types of remote invocation, all flavors of the same thing: RMI, CORBA, and RMI-IIOP? Can't one be selected for the core API, and others be add-ons? Why are AWT and Swing still separate, and why do Swing classes still not implement Containers, as was the plan long ago?
I know that this is for backward compatibly, which is why I think it is time for JDK 2.0. The current J2SE/Java5 is really JDK 1.5. Let the old 1.x series be grandfathered out, but always be available for whoever needs it. Refactor, clean up, fix the things that have always needed to be fixed. Organize the API in a clean, logical and intuitive hierarchy. Make a JDK 2.x series with that new car smell. Market it as Java6 or whatever.
As an aside, I do not think that I will ever understand these "X is cool. Y sucks" arguments. A good developer selects the proper tool for the job, whatever it is. I haven't tried Ruby yet, but I have used all of the others. All have their qualities and drawbacks. For example, I really like PHP, but I don't think that MySQL- or Postgres-specific calls should be in the core; rather, the ODBC-like abstraction like can be found in PEAR.
Following the narrow path of a single language only limits a person's skills. Consider the different options not as opposing each other, but orthogonal to each other, adding new dimensions or degrees of freedom.
Re:PHP vs. Java (Score:3, Informative)
I'll use http://www.wheeloyum.com/ [wheeloyum.com] as an example. The web site is 100% LAMP. The app (client, applet, and server) is 100% Java. They both do well for their job. They even communicate with each other. Obviously they have their own strengths and weaknesses, especially relative to each other.
As with most other tasks, the right tool for the job is key.
Re:Stupid new buzzword (Score:2, Informative)
Re:.NET?!? (Score:5, Informative)
Many of your points may be correct, but a price comparison is not necessarily one of them.
rob.
Re:The real 90s versus outdated 00s software (Score:3, Informative)
That would be Smalltalk.
Re:The real 90s versus outdated 00s software (Score:3, Informative)
That's so wrong it hurts.
Primitive types are not objects, nor are functions, methods, or class.
Check Smalltalk, Ruby or Python (for example) to see what "everything is an object" truly means.
A class is an object, a module is an object, a function is an object, every single built-in type is an object. THAT is an everything is an object approach.
Java will survive as long as Google (Score:2, Informative)
So, it seems that Google has some serious management, business, and code ties with Java. That's to say nothing of IBM, Oracle, and others.
Re:The real 90s versus outdated 00s software (Score:2, Informative)
Rubbish. There is about to be a new definition of the language 2005/2006 depending when they get round to it. You know the new Airbus - running Ada. It is still the defacto safety-critical/defense language
Re:The real 90s versus outdated 00s software (Score:3, Informative)
How about a 100 thousand plus line app running flawlessly on Windows, OS X, Netware, Solaris and AIX? Not linux yet, but close. The problem wasn't with our code, but getting drivers for third party hardware.
Oh, and also talking to MSDE, MsSQL, MySQL, Oracle and Postgres databases.
Why this kitchen sink of combinations? Because that is our customers environments and if we can say we work on their environment rather than forcing them to our environment, we both win (only our QA department loses)
While "Java, Write once, Test everywhere" is true, that should be true of your product regardless of language, so you haven't really lost anything.
We've had some GUI issues, but the server-side code has required almost no special handling for the different OS's (we did need to work around an OS X bug).
Re:The real 90s versus outdated 00s software (Score:5, Informative)
I work on a Java app that processes over 25 million transactions a week for a large financial institution.
This app used to run on OS/390 but we moved it to Solaris and the only compatibility problem we found had nothing to do with Java but SQL language differences going from DB/2 to Oracle. Now we do all of our development on Windows and our production runs on Solaris using the code we compiled and packaged on Windows.
Now that might not be "every platform" but I think you'll agree that the three platforms I mentioned are about as different as you can get. Especially OS/390 on which none of the other languages mentioned in this discussion will even run.
Re:Java: Where Components come from (Score:5, Informative)
Not sure what you mean here. Perl doesn't enjoy the "hip" factor that Python and Ruby have. But Perl has an overwhelmingly larger community than either of those two languages.
I like both Python and Ruby, and think they are better-designed languages. But Perl has a huge advantage over these other languages: CPAN. You can be more productive in Perl because 80% of your code is written for you, ready for the taking. Visit http://search.cpan.org/ [cpan.org] to see just how much stuff is there. But here is what the Python folks don't get. CPAN is much more than a repository. It's an automated distribution system. On any Perl system, type, for example, "cpan Spreadsheet::ParseExcel" and voila, you've got a class that can read binary Excel files. Any module you install may have other CPAN dependencies, which are installed automatically. These modules have a test suite and won't install unless they pass the tests. You can also, via CPAN, view the test results on many different platforms, see module ratings, the automatically extracted docs, discussions, the bug tracker entries for the module, etc. Because this is all standardized and centralized, you can write a module that depends on other modules without having to worry about inconveniencing your users--everything will install for them automatically. So the barrier to code reuse is very low, and people build modules by subclassing or otherwise extending and combining the functionality of other modules, simply writing the glue code. In other words, one of the basic tenets of the OO concept, encapsulation and code reuse, is being very elegantly played out in a place you wouldn't expect.
Ruby is getting a good start at emulating some of the CPAN functionality with their RubyGems. Python doesn't have anything like this yet. I have no doubt they will someday, and there's been brought up many times on the Python groups, and usually gets knee-jerk reactions that don't show an understanding of what CPAN has to offer. The vaults of parnassus, etc are certainly not even close to the same thing.
So, I am currently more productive with Perl, and it is certainly not because of the language or syntax itself--its despite it. I just find myself writing a lot less code and getting more accomplished. I look forward to being able to do the same in Ruby or Python someday.
Re:The real 90s versus outdated 00s software (Score:5, Informative)
have to agree with Mr. Decaff there. Garbage collection has gotten more advanced using things such as incremental GC. Also, specialized VMs such as from bea (look for JRockit [bea.com]) use advanced techniques such as multiple GCs.
Also the article mentions:
For one, many of the now-large companies built from the ground up to operate on the Internet don't make Java a major piece of their tech strategy. Those include Google (GOOG) and Yahoo! (YHOO).
In this [sun.com] article, Li Moore (software engineer at Google) says: "Google makes extensive use of the Java platform. Large parts of popular Google products are written in Java. We also use Java in many internal systems and products under development." So, this would seem to be entirely untrue in Google. I wish people would do a bit of research, instead of speculate/lie (which are, of course, easier to do).
Finally, I notice that the author of the article asks Peter Yared and Marc Andreessen their opinion. What sort of answer would one expect from the CEO and chairman (respectively) of competing technology companies? Naturally, they would champion their own technology and bash a competitor. I certainly would if I were in their shoes!
Re:The real 90s versus outdated 00s software (Score:3, Informative)
Even though I am mainly a Java developer, I agree that the Ruby language deserves a lot of success. However, I really don't think that there is a lot of momentum around Ruby on Rails. There is a lot of press, and a lot of discussion, but there is little evidence that this has actually resulted in significantly increased use.
Why Java still isn't faster than C++ (Score:3, Informative)
Oh, man, do we have to do this again?
Java has theoretical limitations that mean it will always have difficulty keeping up with a well-optimised C++ program.
For a start, let's get over the Hotspot thing. It's an optimiser. C++ has had them for a year or two, now, I hear. If Hotspot had revolutionary new techniques, why haven't they been adopted en masse in the C++ world? Presumably you can cite patents or similar that would prevent this?
There is a theoretical possibility that a dynamically-optimised Java application could do better than something compiled with C++ on a given data set. However, recent advances like profile-guided optimisation in the C++ world suggest that data-based optimisation doesn't help that much.
Moreover, there are very significant overheads incurred in the monitoring and, if necessary, compilation and optimisation steps running in the background. A compiled C++ program instrumented for use with a profiler will typically run several times more slowly than the equivalent uninstrumented code, unless you're running on something like an Itanium that has handy hardware support for these things, and there's no silver bullet that allows a JVM to magically collect the equivalent data without overhead, nor to collect a much smaller set of data yet still optimise to the same extent based on it.
Right, now we've got the Hotspot stuff out of the way, let's do the inherent difficulties with GC. To release memory, sometime, somewhere, you have to update whatever tables you use to indicate what's allocated. That's it. Anything you can do with a flashy GC in Java, you can code up the same memory management algorithms in C++ if you really need it. In C++, you can also write more specialised alternatives for different data types, and of course many objects are simply allocated on the stack anyway. Java is just about catching up with the advantages of that one with techniques like escape analysis today, yet it's standard, chapter 1 fare in the C++ world.
And of course, there are still the same fundamental weaknesses in Java's design that there always have been...
Java doesn't have value types, so everything's dynamically allocated by default.
Not everything is an object, so you have boxing overheads even in simple things like containers unless you use generics.
Those generics have only just been introduced into the language, and are a poor imitation of C++ templates, offering few of the advantages that template metaprogramming has been providing to serious, high performance libraries in C++ for a few years now.
Java's floating point model is constrained by its portability requirements -- for a while it was even theoretically impossible for a JVM to meet them, IIRC -- which unavoidably prevents the use of many math optimisations.
I could go on, but I'm getting bored, so I'll leave the record straight enough and stop there.
One last thing: before you reply and tell me to do research rather than rant as you have with other posters, you should know that I write high-performance, highly portable code for a living, and I work with countless other people in the industry who do the same. If the Java evangelists were right, and Java really was rivalling the performance of C++ and easier/safer/more productive today, then it's strange that the entire industry I work in, with all its R&D, hasn't noticed.
Re:The real 90s versus outdated 00s software (Score:2, Informative)
Re:The real 90s versus outdated 00s software (Score:2, Informative)
Especially OS/390 on which none of the other languages mentioned in this discussion will even run.
Python appears to be available [teaser.fr] for OS/390: