Posted on 05/10/2010 7:18:34 PM PDT by SeekAndFind
Java or .Net? Where are the careers today and tomorrow?
Java was the first successful managed programming framework. It was created by Sun Microsystems in an attempt to stop the momentum Microsoft was making into the world of big-dollar corporate computing systems. In the early 1990's, the market for corporate and government "big-iron" computers was extremely fragmented, and Sun was the dominate player with more market share than rivals IBM, HP, and DEC (Digital Equipment Corporation). Microsoft had just begun working with Compaq to use their Windows NT operating system running on beefed up Intel x86 systems to infringe on that market, but much to Sun's chagrin, Microsoft and Compaq were being supremely successful in doing so. At the same time, Sun's market share was starting to shrink even though sales were growing due to the onset of the Internet boom. Compaq was selling so many Windows NT servers that they eventually were able to gobble up DEC and the most prized processor in the world, the DEC Alpha which was at the heart of the most popular mid-sized systems for small governments and universities.
Seeing the writing on the wall, but still in love with their own platform, Sun release Java for Solaris and Windows. The heart of Java is the JVM, which is a very complex piece of software. The main advantage of the JVM is its portable nature. It can be hosted on any system for which the JVM has been ported to. Any system hosting a JVM in turn can run any software written in Java. Sun's business model was to encourage porting of Java to all of the major platforms by allowing a free Standard Edition to be created. Then, once the Standard Edition was stable on a platform, the Enterprise Edition (which is NOT free) could then be implemented on top of the Standard Edition through a rather pricey licensing agreement. Once the demand for Java applications written for the J2EE platform reached a certain point, Sun would be able to withstand competition from Microsoft's Windows in Sun's own back yard.
Bill Gates is a lot of things, but stupid he is not. Almost immediately, Gates tried to derail Sun's plans for Java, and he almost succeeded. This came about through a licensing agreement that allowed Microsoft to create their own JVM to distribute with Windows so users wouldn't have to obtain a copy of Sun's JVM. Microsoft created a new language that expanded on Java and blended into it non-JVM standard features for integration with Windows NT. This language, called Microsoft Visual J++, never really garnered much market share, but the Microsoft JVM did, quickly becoming the most commonly used JVM on the market. Microsoft then stopped implementing new features, specifically the ones that allow the Java 2 Enterprise Edition software to work, thus nearly stopping Sun's business model for Java before it ever got started.
Sun sued Microsoft, and the suit stayed in the courts until earlier this year after several unfavorable rulings against Microsoft. In the mean time, Microsoft was fighting back on a parallel front. They hired Anders Heijlsberg (who had created the Delphi programming language and IDE) away from Borland and tasked him with creating a new managed programming framework that could support a variety of programming languages and which would be submitted to ECMA for standardization.
Heijlsberg hit two home runs: The first was a new programming language called C# which combined all of the great features of Java and C++ and added many new features that were previously dreamed of but never fully realized. The second was the Common Language Runtime. Both technologies were submitted to and ratified by ECMA. Microsoft then did something unheard of: they bet the farm on these two new standard technologies, much in the same way that Sun has bet the farm on Java.
The combination of the CLR, C# and Microsoft's standard set of libraries for the two is known as the Microsoft .Net Framework. As part of their bet-the-farm mentality with .Net, Microsoft forced the millions of Visual Basic programmers around the world to be relegated to the past or move to the new Visual Basic.Net language or to C#. Almost all of them have.
The CLR and C# being standards compliant has been a boon to Microsoft in another area: new open-source based implementations of the CLR and C# have been released, with Novel Mono recently becoming a fully baked and supported product. Every win for .Net is a loss for Java. There are now over 100 programming languages targeting the CLR, even languages such as Python which were previously believed to not be compatible with a strongly-typed infrastructure. But make no mistake, C# is crown jewel of the .Net Framework and it's growing in popularity with both software developers and decision makers alike.
To support the .Net Framework, Microsoft has refreshed their Visual Studio line of development tools to be the best and most productive Integrated Development Environment available, even for people who don't use all of its visual design tools.
Along the road to the present, Java has taken some curious turns to get where it is. Where as Microsoft tried to strong-arm Java away from Sun, IBM has successfully finessed its way into the lead as the main proponent of Java, and arguably makes more money from it than Sun does. IBM includes Java as a core technology on nearly every computer it sells and has done more to improve the JVM than any other company.
IBM recently created the Eclipse open source software foundation which aims to provide Java developers a true counterpart to Microsoft's Visual Studio .Net IDE. IBM has also bought Rational Software, a long time partner who creates tools to help at all stages of Software Development and also employs the three visionaries who made Object Oriented Programming the dominant force it is today.
In an odd twist of fate, Sun's ploy to keep its place at the head of the table has put IBM and Microsoft there instead. Sun recently broke a string of 13 consecutive quarters of losses, and the main reason for its rebound has been its own changes towards open standards and industry supported platforms such as the Intel x86 based processors from AMD.
The future of software development is now expected to be a near 50-50 split between Java and .Net. When making a decision on which technology to bank on, you should really research what types of companies use which technology, and which fits into your career aspirations. Java and .Net overlap in a lot of markets and inevitably each will form definitive niches that will be hard to break until newer model-based programming technologies take over.
I do not believe you can make a mistake either way. C# and Java are so similar as programming languages that in a lot of cases, they are nearly syntactically identical. There are greater differences if you plan to be a System Architect. If that is your long-term career goals, then you will be well served to pick an arena and learn the software design tools targeting that arena. Currently Java has a greater number of mature design tools available, but Microsoft will try to change that in the next few years with a completely new modeling system that will be integrated directly into the Visual Studio .Net IDE.
So their developers can be vastly more productive and their software can run efficiently maybe?
I did Java for a number of years. Thank God I was able to make the jump to sanity.
IntelliJ and Eclipes are ridiculous jokes compared to VS 2008. Ever tried to start up Net Beans or any IDE written in Java? Be prepared to wait a long long time for the splash screen to disappear. Then be prepared for your machine to be completely overwhelmed by the bloated piece of junk written by a bad developers with absolutely no concept of performance (like many Java developers).
Ever heard of intellisense? It's something Java programmers have never really experienced.
Ever hear of LINQ? It renders Java obsolete in all matters related to data handling and collections.
Need a form environment? You can take a few months to master SWING so you can write balky, ugly, difficult to maintain apps. Or have a few days to learn to make decent Winform apps. The decision really isn't so difficult.
Need a really crappy resource hogging web server. There's always JBOSS.
That said, anybody who codes C# who can't code in Java is too dumb to program. And if you stick to the .Net 2.0 subset of C#, Java coders should have no problem coding in C#.
bump
We must be the exception that proves the rule. C++ based - standard C++, compiled by both GNU and Intel compilers. (also previously with SGI compiler). Same codebase has been run on SGI Unix and Linux on a total of 3 completely disjoint CPU architectures. Note, non-trivial code size, over a million SLOC. That is the core engine of the code. We do have GUIs built with vanilla Java.
My take on it: stick with open standards (Java, GNU, Linux) and you have a lot of freedom. A lot. Windows? That's just for the secretaries to play with Outlook and project manager types to build pretty presentations with power point.
NERD FIIIIIIIGHT!!!
For those who want to know what IDE’s support :
C# and .NET
IDE/ Developer/ Latest stable release/Platform License
* Microsoft Visual Studio/ Microsoft 2010 / April 12, 2010 /Windows Proprietary
* MonoDevelop Novell / the Mono community 2.2.1 / February 3 2010 / Cross-platform GNU Library General Public License) or LGPL
* SharpDevelop / ICSharpCode Team 3.1.1 / December 12, 2009 /Windows GNU Library General Public License) or LGPL
JAVA
IDE /License/ JVM /Platforms/ GUI builder
* Oracle Workshop for WebLogic/ Proprietary / Yes/ Windows, LINUX, UNIX, Solaris/ Yes
* Eclipse JDT / EPL / Yes /Windows, Mac OS X, Linux, Solaris / No
* JBuilder / Proprietary / Yes / Windows, Mac OS X, Linux, Solaris / Yes
* NetBeans / CDDL, GPL2 / Yes / Windows, Mac OS X, Linux, Solaris / Yes
* BlueJ / GPL2+GNU linking exception / Yes / Windows, Mac OS X, Linux, Solaris / No
* JDeveloper / Proprietary OTN JDeveloper License (freeware) / Yes / Windows, Mac OS X, Linux, generic JVM /Yes
* IntelliJ IDEA / ALv2, proprietary / Yes / Windows, Mac OS X, Linux / Yes
* MonoDevelop / GNU Library General Public License) or LGPL
/ No / Windows, Mac OS X, Linux, Solaris / Yes
* MyEclipse / Proprietary / Yes / Windows, Mac OS X, Linux / Yes
* Xcode / Proprietary (freeware)/ No / Mac OS X / Yes
One primary reason for Microsoft products: Tools. Microsoft has Visual Studio. Install it in 10 minutes, Use it. Code. Install finished app. Use that. Simple.
Java? Down load this that and the other, take all day or week, and even then you won’t have what Visual Studio offers with all kinds of holes in the development setup. Then go try to get it running on something, spend all week configuring, downloading, configuring, downloading, open source product was never a company and the nerd no longer supports it so go find and integrate an alternate, pull hair out, repeat.
It’s a no-brainer if you have all Microsoft Servers, you would be stupid not to go with .NET. But most shops have a mix, like where I am, so we do support both .NET and Java.
I do believe that a Java developer is more flexible in that it’s easier for them to cross over into .NET than a .NET developer to cross over into Java. So from a career standpoint, if you only could know one technology, choose Java.
Also, more and more, Java is not about the Java language, but the JVM. There are many new languages cropping up for the JVM: Groovy, Scala, JRuby, Jython, etc.
Because IT is managed by idiots who generally either have no technical experience at all, or were basically IT washouts who sucked at coding and actually doing the work. And like typical ignorant managers they are more worried about protecting their far too large paychecks than they are about doing something right.. and operate on a completely CYA mentality. And when you aren’t too bright and are operating on CYA, your conclusions are simple.. people don’t get fired for buying Microsoft.
.Net is a joke compared to the Java world, anyone whos truly worked in both and is honest with you will tell you that... but that can’t trump IT management ignorance.
Neither, please.
I will say that Eclipse has improved somewhat, and with Maven, it definitely has made it easier to build projects and manage dependencies. Still a way to go to make it as simple as VS, but it’s definitely better than it was.
I’ve always heard that LINQ was intended only as a stop gap.
There are situations where Java makes sense, but it seems that too often, with both of these environments, they are used for every trivial project, at great cost.
“When the only tool you have is a hammer, every problem begins to resemble a nail.”
Sometimes, you need the Java infrastructure...other times, a perl script will suffice. .NET is single platform, so it’s not a serious development environment, IMO.
I should add that there is the occasional place .NET makes sense, like writing some tool to run on Windows machines that talks to other systems. But, generally, it’s a trap.
You have to look at different technologies like a golfer looks at his golf clubs. Just as there are different clubs for different situations, it’s the same with technology, it’s not “one size fits all.”
On any given day, I support applications written in Java, C#, VB.Net, Adobe Flex, VBScript, ASP, ASP.NET, VB, PERL, and PHP. We use different languages and technologies because it’s the best fit for the situation. And frankly, any programmer worth his salt should have no problem dealing with all of those languages. If you know only one language/technology in this day and age, you are toast!
I'm just looking into Novell Mono, but it seems like the right idea. Microsoft offers great development tools for an inadequate platform, Java offers inadequate development tools for robust platforms. Something's got to give.
Disclaimer: Opinions posted on Free Republic are those of the individual posters and do not necessarily represent the opinion of Free Republic or its management. All materials posted herein are protected by copyright law and the exemption for fair use of copyrighted works.