| By Hal Helms | Article Rating: |
|
| May 13, 2003 12:00 AM EDT | Reads: |
14,084 |
(Editor's note: Hal Helms, editorial board member and regular columnist for ColdFusion Developer's Journal, is also a strong advocate for Java training. This commentary originally appeared in his Website and is reprinted with his permission.) (May 13, 2003) - Sure, *you* want to learn Java: it makes your code faster, more robust, and more flexible. But what about your company? As a friend of mine says, "we're all listening to WII-FM". As in "What's In It For Me?" If you're asking your manager to approve training, s/he needs to know that there's a better reason than what's in it for you. Here are ten reasons I think Java expertise is important for companies.
First, Java is simply the unchallenged language of choice for building robust applications. As pressures increase for software to perform -- and to scale and evolve over time - the move to Java becomes more and more compelling. Java's excellent error handling, automatic garbage collection and code reuse can offer companies very significant savings. But Java by itself is not a magic bullet. Developers without proper training often see no benefit from Java.
Second, Java was built to be a secure language. The last thing that anyone wants to see is a mention of their company in an article detailing how a security lapse exposed key data meant to be private. Java helps ensure that data meant to be private stays private - and that when companies appear in the press, it's for a good reason.
Third, Java provides support for the latest technologies including Web services, XML, messaging, wireless, etc. In fact, one of the great things about Java is that it is so vast in its scope. If it can be done in software, it can be done in Java. And once you understand object orientation and know the Java syntax, learning how to use new features in Java only involves adding to your existing Java knowledge -- a far easier task than learning a new language and syntax.
Fourth is performance. Java is a high-performance language. Java with JSP (similar to ColdFusion for presentation) is over 10 times faster than using ColdFusion. A single JSP server can handle 10 times the number of simultaneous requests that ColdFusion can. Can you scale CF by adding hardware? Sure, but each server costs both hardware and software licensing money and all these must be administered.
Fifth, Java encourages documentation. The Javadoc utility is an absolute inspiration, allowing programmer-written comments to create high-quality documentation automatically. In fact, all of the official Java API documentation is generated from such comments. To a corporation, documentation represents a stable body of knowledge that new developers can read and come up to speed on quickly. But experience shows that if documentation is hard to produce, it won't be produced. Javadoc makes documentation remarkably easy.
Sixth, Java has an enormous number of supporting characters -- many of them free. This includes a very powerful framework called Struts, ColdFusion-like tags in JSPs, etc. One of the best editors for Java, Eclipse, is both extremely powerful and free. In proprietary languages, every addition costs. Additionally, there is a wealth of free information available to help beginning Java programmers.
Seventh, Java can communicate with an enormous number of products-from databases to highly specialized equipment. It's safe to say that anyone who produces an API to their product produces a Java version. This is true both currently and for the long term. Contrast this with proprietary languages.
Eight, Java can be deployed on virtually any platform without recompilation. The reason is that Java compiles to "byte code" and this byte code is then interpreted by Java virtual machines (JVMs). JVMs exist for virtually every platform. The benefit is that separate code bases do not have to be maintained -- an enormous savings to companies and a great relief for programmers charged with this thankless task.
Ninth, Java can be used for both Web-based applications and console applications. As great as the Web is, there are times where it's just not appropriate for certain applications. If you know only a Web language, you're stuck. Java has excellent support for building console-based applications.
Tenth, Java provides insurance against application obsolescence. Markets tend to cohere around a few, key technologies. Java is one of those. Over time, applications written using other technologies become harder and more expensive to maintain. With the universal acceptance of Java as the new King of the Hill, companies that adopt Java are assured of a large pool of skilled programmers. In other words, niche = expensive.
A lagniappe: Our friends in Louisiana have a word called "lagniappe" that means "a little something extra". An extra reason why Java makes sense for companies is that it prevents vendor lock-in. When you have a single source for a language, you are joined at the hip with the vendor making the language. Any financial problems of that vendor become your problem. If the vendor decides to raise rates to make up for lack of demand, you have no say in the matter. Java, besides being free, has a community process that involves every major vendor and a very large number of users of the language. In other words, mainstream = safe.
But can't developers pick up Java on their own? Yes - and no. The syntax of Java isn't particularly difficult. In fact, we spend only 20% of the class going over syntax. The rest of the class deals with the hard part of Java - learning to "think in objects" as programming guru, Bruce Eckel, puts it. The shift from procedural thinking to object thinking is not particularly natural or easy for most of us. Having an experienced guide and mentor to help you with that is enormously valuable.
For example, pick up a Java book and read about a feature of Java called "interfaces" and you're likely to get the impression that interfaces are used to provide the benefits of multiple inheritance. While that is not untrue, it misses showing students how interfaces are absolutely fundamental to creating OO designs and are key to one of OO's most powerful features, polymorphism. And without understanding this, developers are too apt to write old-style, procedural code and stuff this code into Java classes. This represents the worst of all worlds: a new technology stripped of its chief benefits.
Finally, some may ask about Microsoft's .NET initiative. Doesn't that compete with Java? Should developers learn Java or concentrate on .NET? It usually surprises people when I tell them that I like .NET very much. It provides great tools for developers and is a very good implementation of object orientation. Microsoft has recast even venerable Visual Basic so that now it is fully object oriented. Microsoft's chosen language, though, is C#, a language very similar to Java.
I encourage people who think they may be working in .NET to learn Java first. Why? Because while .NET offers some great shortcuts that work just by pushing a button, you really need to understand what "pushing the button" does. There's just no substitute for learning object orientation and Java is non vendor-specific. In other words, moving from Java to C# is usually much easier than moving from C# to Java. The reason is that C# training focuses on the Microsoft way of doing things. As I said, I'm a big fan of .NET and C#, but first, let's get a solid foundation in OO.
Published May 13, 2003 Reads 14,084
Copyright © 2003 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Hal Helms
Hal Helms is a well-known speaker/writer/strategist on software development issues. He holds training sessions on Java, ColdFusion, and software development processes. He authors a popular monthly newsletter series. For more information, contact him at hal (at) halhelms.com or see his website, www.halhelms.com.
![]() |
Ronald Newton 05/24/03 05:35:00 PM EDT | |||
You can always find poor developers using any technology. That they are certified simply indicates their ability to learn to pass a test--but it does indicate that at that point in time, they knew something about the technology, someting you cannot guarantee in someone who is not certified. Pretenders abound in our field -- they code in all languages and are at all levels in all positions. So--- DON'T BASH JAVA BECAUSE YOU RAN ACROSS A CERTIFIED PERSON WHO COULD NOT CODE WELL. Ronald Newton |
||||
![]() |
Phang 05/20/03 01:20:00 AM EDT | |||
>>I have seen Sun Certified Engineers that couldn't code at all. I have seen programmers coming from other languages that picked up a book and ran with it. It is good programmers that create the benefit, not training courses |
||||
![]() |
Raymond Lee 05/16/03 01:21:00 PM EDT | |||
It seems that no one thinks about the decompilation of Java class byte code from those decompilers? Is it also a good reason to stay with Java? I always expects Sun will put more effort on protecting the compiled source code...but also make me disappointed. Thanks, |
||||
![]() |
halfnium@alum.mit.edu 05/14/03 07:21:00 PM EDT | |||
One must pay attention to Java because it's ubiquitous. By now, it's like a force of nature, warts and all. Java was in the right place, at the right time, with the right (no charge, all expenses paid by Sun) sponsorship. That says you'd better learn to live with it and use it. The fact that you've also got to learn a pile of constantly changing APIs and other programming languages and environments to get anything real done opens a fantastic $$$ opportunity for training companies and tools companies and consulting companies and ..... BECAUSE JAVA AND RELATED TECHNOLOGIES ARE DIFFICULT TO USE. In particular, Java was not designed for web services. It is a tribute to many tough, persistent people that any web services work gets done in Java. You can see my favorite way to go at www.waterlanguage.org. |
||||
![]() |
Vlad Piankov 05/14/03 03:51:00 PM EDT | |||
Wrong. ColdFusion MX file is compiled during first request and all requests will actually hit the servlet (same with JSP). And that servlet is running on Java Application Server, which is JRun (CFMXs underlying platform). ColdFusion only "translates" CFML (cold fusion markup language)to Java. You can write JSP and run it on ColdFusionMX server and result will be th same. |
||||
![]() |
Richard Stack 05/14/03 10:18:00 AM EDT | |||
The article certainly gave ten good reason for Java, but there's one more. |
||||
![]() |
fletch 05/14/03 10:17:00 AM EDT | |||
I would go with 1 reason Write once , run multiple places has been illusion since the beginning of time. Java needs to have an easier coding interface with beginner(VB) like guys and the hardcore(Java is easy) guys. It doesn't so .Net steps in. Where is the 4GL for Java..3GL maybe? 2 GL? I am curious whether ColdFusion MX (easy to write) and generates high performance Java may be the ticket... ************* 1. It has been around and it has proven itself... 2. It can be ran on multiple platform, once compiled. |
||||
![]() |
Oton 05/14/03 09:25:00 AM EDT | |||
take a look |
||||
![]() |
Didier Besset 05/14/03 03:00:00 AM EDT | |||
Unfortunately, this article praises Java with some questionable reasons. Most of the arguments are pertinent, but 3 of them are really off the mark. |
||||
![]() |
E.S. Sei 05/13/03 05:42:00 PM EDT | |||
I have the same experience as Brian few years ago. But I still learn Java just in case it really picks up (with a lot of marketing, it did). I am also learning about .NET (same reason). Currently I am using a 4GL that comes with application framework - the most efficient tool for me for now. You will never know what comes next... |
||||
![]() |
jay sdk 05/13/03 04:54:00 PM EDT | |||
"Developers without proper training often see no benefit from Java." - that's cute. You think a 5 day or even 2-week company sponsored course with a corporate training company will fix that? I have seen Sun Certified Engineers that couldn't code at all. I have seen programmers coming from other languages that picked up a book and ran with it. It is good programmers that create the benefit, not training courses. |
||||
![]() |
Yagiz Erkan 05/13/03 04:10:00 PM EDT | |||
> Try loading up your WSAD application What kind of statement is that? Obviously the source code is vendor independent, not the project file. Copy your code package hierarchy in Eclipse, see if that works. If you use a tool that doesn't keep the source code as a Java file, I don't know who's fault is that? The company who opted for using using that tool or the tool itself? |
||||
![]() |
Brad 05/13/03 03:55:00 PM EDT | |||
I am a long time entrepreneur, and I use Java and Microsoft (primarily Visual Basic) every week. A lot of good points in this thread. IMHO, I think it all comes down to your objectives. If you run a large development group and are more interested in corraling all developers into one well defined sandbox in which they develop all applications, then .Net is clearly the platform of choice. If on the other hand, you are doing innovative work in which you need to think (and code) outside of the box in order to be successful, then Java is a far more empowering environment. Microsoft, for sound business reasons, is after the huge mainstream IT market of large corporations, standard SQL based applications, etc. So they produce an architecture and a development environment that highly optimizes any development in this well defined technology sandbox. If on the other hand, you need to do something leading edge or revolutionary, then you are very restricted on Microsoft technology. Case in point; write a almost any control in Visual C++ and you'll see what I mean. In this environment, Visual C++ is virtually a "write only" language. From a business perspective, if it is a desktop application, the odds are about 99 to 1 in Microsoft's favor, so I'd choose that option. If your application is web based and its value is mainly in the business process that is encapsulated in standard screens and standard (albeit complex) SQL database relationships, then .Net is great. But if your application is outside of that model, then I would go for the clean, extremely well engineered (from a computer science point of view) Java as the best "enabling" tool. And finally, if you are a starving startup: Microsoft MDSN subscription=$$, Windows Server 2003 to deploy on=$$, SQL Server licenses=$$, web hosting costs using SQL Server=+$$, etc. Java when combined with the totally industrial open source software available: virtually all of that is free. Need an additional box? Buy a server for a thousand or so and you are off and running; no more licensing costs. In closing: if you will have 1000 mediocre programmers on the project: .Net. If you will have 5-10 above average programmers on the project: Java. Different strokes for different folks. |
||||
![]() |
Will Handley 05/13/03 02:09:00 PM EDT | |||
I pretty much agree with the article, but I think it's amusing to click on one of the links and see that "Java Developer's Journal" is running on Cold Fusion. Guess you don't want to be 10 times faster? |
||||
![]() |
Brian Kiser 05/13/03 01:50:00 PM EDT | |||
"I say minimal because, well, when is the last time you ever saw two competing vendors have the EXACT same configuration layout for their competing apps? You haven't! Therefore, ever vendor has their own way of having things deployed." Exactly! It's not really "vendor independent." But I guess it sounds good. I don't have a problem with this, but I get tired of hearing people spout off about how vendor independent Java is. No, I'm not using a PII. However, it's obvious the performance is not the wonderful utopia that the writer believes. It's slow, even on my 1.4ghz with 1gb of ram. It's usable, but saying Swing is "high-performance" is a bit of a stretch, don't you think? In any event, I'm going to assume he wasn't talking about Java as a whole, but rather J2EE, which is pretty quick overall. |
||||
![]() |
kevin 05/13/03 01:21:00 PM EDT | |||
As to the article, I agree for the most part, and I too like what .NET has to offer. I am a little unclear how you figure Java/JSP is 10x faster than cold fusion? I don't even know cold fusion, some of our other co workers do. But I am curious what tests were ran to show that it is 10x faster? As for some replies. Brian Kiser writes: Brian, what are you running on, a PII? Sure, a native app will usually run faster, but shouldn't it? Even so, to this day on my PIII800 with 512MB RAM I am seeing NO problem with several java apps. As an example, I give you Eclipse IDE. Yes, the widget set was done through JNI to the native OS, but it is still using JNI, which in itself is somewhat slow. Eclipse is very solid and fast. What exactly do you need Swing to be so fast for anyway? There are really only a couple of apps that Swing wouldn't be good for even on older computers. Games, anything related to real-time updating (by real-time I mean like 1 to 10ms resolution updates such as music applications), and quite possibly intense applications that display a TON of data as well as crunch a lot of data in the background. Even so, any app that does a lot of continuous crunching may infact run faster than native because after a short while the inline compiler in the JVM figures out bottlenecks and can speed them up, possibly faster than a native compiled app. Don't get me wrong Brian, I am not saying this is the case all the time. Absolutely there are times where Java/Swing is slow. But let's pick our battles fairly. Swing has gotten a lot faster, and in JDK 1.5 supposedly it will get a bigger boost with more hardware tie-ins so that graphics are rendered even faster. Windows is accellerated via the video card already, so once Java has more direct hardware accelleration support, it will most likely see a nice improvement (assuming developers using the Java2D and 3D apis, which a lot of the widgets are now doing). Still, I have yet to come across a Swing app other than the Forte/NetBeans that is dog slow. JBuilder 7/8 is not all that slow any more. Keep in mind that the way Swing is used can also play a role in how slow a Swing app is. You and so many others judge all Swing apps as if Swing is the culprit. There are WAY too many Swing apps that are poorly written and do not follow the write conventions when dealing with things like trees and tables. Therefore they are slow, but not due to Swing, more because the developer(s) didn't write them properly. As for Vendor independent, why would you want to load a WSAD project into JBuilder anyway? That isn't the "vendor independent". What the author is describing is that you can load up your J2EE app into any vendor's J2EE App Server so long as it sticks to J2EE standards and not uses a specific vendors proprietary APIs. Keep in mind, WebSphere, which sells for what, $15,000 per cpu per server, they need to have a reason to get people to buy it. It is damn good, but with servers like Orion, JBoss, Tomcat, Resin, Jetty and the bunch all being free or very cheap, there has to be a reason other than J2EE support to spend $300,000 on a few servers. WebSphere, WebLogic and others provide tons of additional yet proprietary capabilities that can really boost performance, load, scalability, etc. The big issue there, and so many MS fans scream about how Java is NOT vendor independent, is that if you USE those proprietary API's, yup you are locked in. Guess what, if I give you my own java library and you use it, oh crap, you are locked in! That is the way it goes no matter what it is. J2EE is just a set of specs that each vendor implements in their own way. If your application follows the J2EE API's exactly, it WILL deploy in any server with minimal work. I say minimal because, well, when is the last time you ever saw two competing vendors have the EXACT same configuration layout for their competing apps? You haven't! Therefore, ever vendor has their own way of having things deployed. The app itself goes unchanged, but the way it is deployed is different. This is why in the J2EE blue prints, Sun specifies the "roles" of development. Front end web/html developer, front end jsp/servlet developer, mid-tier ejb developer, back-end entity developer, and a person that "deploys" all this. Therefore, it would be that persons job on the team to take the "vendor neutral" application and get it to deploy on what ever server(s) he/she is using. The developers shouldn't have to worry about that task in a perfect world, although to be fair we all know that this is very far and few between. Anyway, the author hits home on a number of points, a few are a bit "Java land", true, but overall he is pretty accurate. The sad thing is, too many people don't really understand a lot of what Java offers, and kill the notion before it gets off the ground either out of fear of moving away from their much loved platform (whether it be MS, Delphi, Cold Fusion, PHP, or what have you), or they are too scared to try to think of learning something all over again when they are comfortable in their ways. We once had a developer that was very knowledgable in PL/SQL. Sure, it could do some good stuff, but would you choose that over learning something new that is better and easier? Everything takes a bit of time when its new. It's getting over that fear that takes the longest. |
||||
![]() |
Teekay 05/13/03 01:08:00 PM EDT | |||
yep, this technological war(who is the best) will lead nowhere. The fact of the matter is everything is application specific. I guess there is nothing like one particular technology is THE best. If java is good because of its robustness, platform independence etc etc, .Net is good simply because u can get things done with the push of a button. After all, isnt abstraction one of the key elements of object oriented programming ? So why really break ur head over what a "push of a button" is really doing internally.There are so many things to learn and implement that knowing inside out of every technology is neither possible and nor is it required in every case. Developers who have worked for long periods of time on a particular technology invariably tend to believe that their technology is the best. so c, c++, Java, Visual basic, VC++, Delphi, cobol, pascal and even assembly language, some may argue, is THE BEST . |
||||
![]() |
llc 05/13/03 12:53:00 PM EDT | |||
Just what I love. Technology for technologies sake. Perfect. Let's all rewrite our code. Throw away all your apps guys. We're rewriting in java. So what if it costs us more than it's worth. So what if it puts us years behind because we're rewriting. So what if we drag our company down the tubes cause of our technological religious wars. I can't stand this conversation any longer. I quit. |
||||
![]() |
Brian Kiser 05/13/03 12:30:00 PM EDT | |||
Java is high performance? You are obviously not talking about desktop apps using Swing. Vendor independent? That's the biggest pipe dream I've ever heard of. Try loading up your WSAD application in JDeveloper and see if it's "vendor independent." "Java is simply the unchallenged language of choice for building robust applications." Unchallenged? Really? Somebody better tell Microsoft, 'cause they've challenged Java quite well. Overall, a decent article but it detaches from reality occasionally and goes into "I worship Java" land. |
||||
![]() |
Mike Moore 05/13/03 12:29:00 PM EDT | |||
The difference between MS products and Java products is simply what you have said. MS has "tightened security" in .NET. (i.e. Put in some controls afterwards). Java was written with Security as the first and foremost thought. Let's face it all of MS's products are tied closely to their OS, and there OS's are a petri dish for security. |
||||
![]() |
Sviergn Jiernsen 05/13/03 12:10:00 PM EDT | |||
What our .NET apologist friend here says is true to a degree - like all Microsoft products, many things can be done "just by pushing a button." To do anything other than what the simplistic button does, you have to dig forehead deep into bad code that has yet to hear about MVC or design patterns in general, thus everything custom that you write in .NET looks like it was done by mainframe COBOL spaghetti coders - which, let's face it, is the audience .NET plays to. |
||||
![]() |
Vlad Zelenko 05/13/03 11:44:00 AM EDT | |||
With all due respect to Java, so far as I have seen it only has 2 reasons why it is better than .NET: 1. It has been around and it has proven itself... 2. It can be ran on multiple platform, once compiled. Yet, .NET is a formidable challenger! Microsoft has taking big strides to tighten security, add flexibility, open up to a community. And as far as companies are concerned, it was always possible in the past to hire an "average" Visual Basic programmer to achive the same results as with "good" Java and "very good" C++ programmer in the majority of application. Oh, and did I mention that J2SE/J2EE see to be playing catch-up with .NET framework and ASP.NET? ...there. The bottom line is - to compete with Microsoft we need GREAT IDEs (and we are almost there), incorporation of technologies like SWT and JFace, and stop trying to convince the world of Java's superiority by comparing platform features with .NET - let's just show how far we can take Java, how easy it is to do, and how inexpensive. To the better times for Java! |
||||
- Qt DevDays 2009 - Munich
- The Power of Google and the Promise of Cloud Computing
- Unlocking the Cloud with Enterprise Private PaaS
- Big Data Kills 30-Year-Old Market
- Securing the Cloud and Establishing a Level of Trust
- ExaGrid Sets New Standard in Backup Price, Performance and Capacity with Launch of EX10000E Disk Backup System with Data Deduplication and Expanded 100TB GRID Capacity
- Cloud Computing: Transformative Technology With Financial Benefits
- The Enterprise Private Cloud - From Infrastructure to Applications
- Moving HPC Apps to the Cloud: The Practitioner's Perspective
- Business Service Management: Aligning Business & IT
- IGEL and Quest Software Advance Virtual Desktop Management by Integrating Quest vWorkspace into IGEL Universal Desktops
- World's First 16GB, 2 Virtual Rank Memory Module
- Is Microsoft as Free as Open Source?
- IBM’s Linux-Based ‘Cloud-in-a-Box’ Makes its First Sale
- United Planet offers practical portal building tips for SMBs
- Qt DevDays 2009 - Munich
- The Power of Google and the Promise of Cloud Computing
- Developing APIs for the Cloud
- Unlocking the Cloud with Enterprise Private PaaS
- Testing the Limits with Jack Margo SVP of Developer Shed, (part 1)
- The Bunker achieves PCI DSS Compliance
- Big Data Kills 30-Year-Old Market
- Securing the Cloud and Establishing a Level of Trust
- Excuse Me But Is That a Gazebo On Your Site?!
- The Top 250 Players in the Cloud Computing Ecosystem
- Red Hat Named "Platinum Sponsor" of Virtualization Conference & Expo
- An Introduction to Ant
- Google Web Toolkit: Finally Java Has Been Put into JavaScript!
- AJAX World RIA Conference News - AJAX & RIA with Server-Side JavaScript
- Python Creator Guido van Rossum to Present the Next-Generation Python 3000
- White Paper: "Extended Validation SSL Certificates"
- CEO of Hyperic, Javier Soltero on SYS-CON.TV
- Rating JRuby, Jython, and Groovy on the Java Platform
- Perforce Software Delivers State-of-the-Art Application Lifecycle Management
- TurboGears - Python-Based Framework for AJAX Web Development
- iPhone 3G Only Looks Cheaper































