Free Republic
Browse · Search
General/Chat
Topics · Post Article

Skip to comments.

Java vs .NET : The Professional Software Developer's Survival Guide (The Programmer's Path)
The IT Toolbox ^ | 2010 | Payton Byrd ( Systems Architect)

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.


TOPICS: Computers/Internet
KEYWORDS: java; net; programming
Navigation: use the links below to view more comments.
first previous 1-2021-4041-6061-8081-82 next last
To: libh8er
I don’t understand why IT depts would *pay* AND get locked into a proprietary technology when Java is open source and free and richer than anything MS could offer.

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.

21 posted on 05/10/2010 8:11:50 PM PDT by Minn (Here is a realistic picture of the prophet: ----> ([: {()
[ Post Reply | Private Reply | To 3 | View Replies]

To: rivercat; libh8er
I must agree with rivercat. I've written code for money in just about every language that's ever existed (except FORTH -- and I didn't make much money in Simula or APL.) With version 4.0, C# is light-years ahead of Java. Sorry, but it's just true. With linq, lambdas, true generics, the new C++ like extensions, and dynamic languages, I don't see Java catching up: there just isn't the investment in it.

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#.

22 posted on 05/10/2010 8:13:36 PM PDT by FredZarguna (SEC: "litigation against Apple by multiple Federal agencies is likely and imminent.")
[ Post Reply | Private Reply | To 6 | View Replies]

To: SeekAndFind

bump


23 posted on 05/10/2010 8:14:39 PM PDT by opus86
[ Post Reply | Private Reply | To 1 | View Replies]

To: rivercat
Secondly, all companies get “locked in” as soon as they start buying hardware and software.

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.

24 posted on 05/10/2010 8:25:32 PM PDT by ThunderSleeps (obama out now! I'll keep my money, my guns, and my freedom - you can keep the change.)
[ Post Reply | Private Reply | To 6 | View Replies]

To: All

NERD FIIIIIIIGHT!!!


25 posted on 05/10/2010 9:15:53 PM PDT by Washi
[ Post Reply | Private Reply | To 2 | View Replies]

To: Minn
Ever hear of LINQ? It renders Java obsolete in all matters related to data handling and collections.

I'm using LINQ now to parse XML files. Fantastic. Makes going to specific sections of a humngous XML data file a breeze.

My main concern is the rumor which many seem to be verifying that Microsoft is not planning to support lINQ to SQL in the future in favor of some technology called Entity Frameworks. Not sure if this is true or not.

In your opinion, is Microsoft going to make .NET more "open" in the sense of allowing third parties to work on the framework's standard itself ?
26 posted on 05/11/2010 6:34:41 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 21 | View Replies]

To: FredZarguna
With linq, lambdas, true generics, the new C++ like extensions, and dynamic languages, I don't see Java catching up: there just isn't the investment in it.

Well, there's millions of lines of legacy ( I can't believe I'm using it for Java ) code already out there using the Jave language and the J2EE framework. You can't simply ignore the humongous code base out there.

And of course you have huge company support for Java. Companies like IBM, Oracle (which recently bought SUN), Google, etc.
27 posted on 05/11/2010 6:43:47 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 22 | View Replies]

To: rivercat

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


28 posted on 05/11/2010 7:03:45 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 8 | View Replies]

To: Minn
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.

That of course makes your application tied to the Windows platform forever. Which of course means your company will have to be beholden to Microsoft for the rest of your life.
29 posted on 05/11/2010 7:05:16 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 21 | View Replies]

To: SeekAndFind

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.


30 posted on 05/11/2010 7:06:31 AM PDT by CodeToad
[ Post Reply | Private Reply | To 1 | View Replies]

To: rivercat

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.


31 posted on 05/11/2010 7:09:22 AM PDT by dfwgator
[ Post Reply | Private Reply | To 6 | View Replies]

To: libh8er

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.


32 posted on 05/11/2010 7:09:22 AM PDT by HamiltonJay
[ Post Reply | Private Reply | To 3 | View Replies]

To: SeekAndFind

Neither, please.


33 posted on 05/11/2010 7:09:33 AM PDT by B Knotts (Impeach Obama)
[ Post Reply | Private Reply | To 1 | View Replies]

To: CodeToad

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.


34 posted on 05/11/2010 7:11:46 AM PDT by dfwgator
[ Post Reply | Private Reply | To 30 | View Replies]

To: B Knotts
Neither, please.

I gather you long for the good old days of COBOL...
35 posted on 05/11/2010 7:12:49 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 33 | View Replies]

To: SeekAndFind

I’ve always heard that LINQ was intended only as a stop gap.


36 posted on 05/11/2010 7:15:08 AM PDT by dfwgator
[ Post Reply | Private Reply | To 26 | View Replies]

To: SeekAndFind

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.


37 posted on 05/11/2010 7:18:21 AM PDT by B Knotts (Impeach Obama)
[ Post Reply | Private Reply | To 35 | View Replies]

To: SeekAndFind

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.


38 posted on 05/11/2010 7:20:47 AM PDT by B Knotts (Impeach Obama)
[ Post Reply | Private Reply | To 37 | View Replies]

To: B Knotts

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!


39 posted on 05/11/2010 7:25:30 AM PDT by dfwgator
[ Post Reply | Private Reply | To 37 | View Replies]

To: SeekAndFind
Oooh, a good religious "Die Heretic" thread - haven't had one of these in a while! :)

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.

40 posted on 05/11/2010 7:28:58 AM PDT by Mr. Jeeves ( "The right to offend is far more important than any right not to be offended." - Rowan Atkinson)
[ Post Reply | Private Reply | To 1 | View Replies]


Navigation: use the links below to view more comments.
first previous 1-2021-4041-6061-8081-82 next last

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.

Free Republic
Browse · Search
General/Chat
Topics · Post Article

FreeRepublic, LLC, PO BOX 9771, FRESNO, CA 93794
FreeRepublic.com is powered by software copyright 2000-2008 John Robinson