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.
I guess that’s another reason to consider the Palm Pre (HP Pre?) since there’s a JVM on it. I imagine the Slate will have a JVM as well when/if WebOS is ported to it.
Aside from that, I don’t really get the Java vs. .NET debate, at least not entirely. They have different “mission statements”. Java’s primary purpose is cross-platform development, which is not one of .NET’s at all. By virtue of that alone, they are bound to differ significantly. Just use the right tool for the right job (case in point, when I go home I regain my sanity by coding in Delphi).
I’m very curious to see what Oracle is going to do with the JVM.
I agree. Different tools for different situations. I might differ with your list of choices, though. :-)
DING DING DING!! We have a winner.
Ah.. I was wondering when the Java defenders could come out. Thanks. I don't have any experience with .Net so I can't comment, but I do know that Java is not lacking in anyway. The number of frameworks and open source API's out there are just too rich and makes developing web applications a joy, speaking for myself at least. And it doesn't cost a dime other than hardware costs. Granted there's a steep learning curve, especially if you are coming from a non computer science background which may make it less attractive compared to .Net
Apache POI is a godsend, I can manipulate Excel Spreadsheets without even having to have a copy of Excel.
I’ve programmed with both Java and .net,.....I’ll take .net any day.
That does not mean that there are not some very talented programmers in the .Net space, only that they are the vast minority there. Most have no real understanding of the concepts or lower level interactions that actually go on with what they are doing. Some would argue, that's a good thing.. I get more work cheaper... this of course is the trap... you wind up with such horribly designed and architected systems, (if any architecture happens at all) that you are doing nothing but care and feeding of the beast.
If you want large scaleable, reliable distributed applications in a non homogeneous environment that actually WORK, cand are well architected, you do with competent experienced java development, it will outperform anything that MS is currently doing or even has on the horizon in their .NET framework.
You can sum of the very concept of .NET with the following statement... BASIC is an ACRONYM, it stands for:
Beginner
A-ll Purpose
S-ymbolic
I-nstruction
C-ode
The fact .NET supports and allows development in BASIC tells you all you need to know about that framework. Its effectively a proprietary, third rate attempt to clone the Java distributed environment. Had they mandated C# only they might have a platform where developers and development in that platform could grow and mature to a level that could truly challenge JAVA.. but they didn't.. so they can only take it so far no matter what they do.. because they have millions of folks who really have no business as professional coders out there hacking crap in VB.NEt to this very day.
I HATE VB.NET!!!!!! Why would anyone use that instead of C#?
There are many schools now that are dropping Visual Basic because it is such a flaky language. I was doing C++ and tryed VB and I was thinking “why is this taking so long to write a simple application” and even when it was done the compile time and other annoyances were not worth making any app with VB.
If youve built your business on VB6 over the last decade or so, youll have had to put up with Microsoft changing the rules from time to time. In going from VB3 to VB4, Microsoft introduced 32-bit address spaces, for example a fairly substantial change. Theres nothing too wrong with that provided you dont go too far. If nobody changed anything we would all still be using code full of lines with numbers on.
But in going from VB6 to VB .NET Microsoft did far more than that. It re-wrote the language: VB .NET is, in essence, a totally new language. It bears some superficial resemblance to VB6, but underneath it is entirely predicated on the .NET Common Language Runtime (CLR) and its data types; and at compile time, you have to use the .NET framework.
Now, the change to using the .NET CLR is substantial, but manageable. Changing the VB Integer data type from 16-bits to 32-bits is radical, but with a good editor and some decent testing, you can cope. There are other similar changes mainly small, possibly annoying, but generally manageable. But what isnt manageable is where Microsoft has thrown out language constructs like the good old GOSUB. This little story bears some examination.
You might think, as I initially did having never once had cause to use it, that it was about time that GOSUB was given the boot. But it turns out that on closer inspection (reading the manual, that is) that GOSUB is not quite what it seems. With a VB6 GOSUB, the lexical scope of the GOSUB is that of the surrounding FUNCTION or SUB. So you can access variables quickly within a routine without having to pass them as parameters. In other words, its a nested function. Now this isnt very common, but there are languages which do allow you to do this ALGOL68 and Pascal being two that Im familiar with, and Im sure there are several more. But one language that you cannot do this in is ANSI C. And that has followed into its descendents C++ and C#, though the GNU C compiler family now has an extension to allow nested function declarations.
The reason why allowing procedures to be declared with procedures has gone out of fashion is mainly, I suspect, due to the dominance of C. The downside is that the technique requires a more complicated compiler, has slightly more overhead associated with it and just possibly may be trickier to debug. But it does have its uses Ive used it myself in some ALGOL68 programs.
Anyway, the point here is that if youve got hundreds of thousands of lines of code that use GOSUB, then you are well and truly in deep trouble. There is no simple way of converting your code and the Microsoft-supplied conversion tool just doesnt do anything apart from tell you that you cant. So there!
Fundamentally, Microsoft has said that, come hell or high water, VB6 will cease to exist as far as it is concerned sometime in 2008. Additionally, it seems that Microsoft is not going to enhance the porting tool or add new language features to VB .NET. So, if you have the interesting intellectual problem which I mentioned above, what are you going to do?
One language that does support both object oriented programming and procedural methods is Delphi. In addition, being Pascal based, it also handles the GOSUB problem nicely. And there are tools out there that will convert from VB6 to Delphi. Borland might be beginning to smile again after a long period in Microsofts shadow.
Another alternative might be to use VB6 a lookalike such as REALbasic. The problem here though might be jumping from the frying pan into the fire. Betting your future on a small software vendor having been burnt by a large one may not be the best, or most tempting, strategy.
Or you could re-write the whole shooting match in VB .NET. But if you are going to do that why chose VB? C# seems to be the way Microsoft is pushing things and Ive certainly seen no real advantage in using VB .NET over C#.
So, if you’re into .NET and plan to use the platform for future applications — FORGET VISUAL BASIC and use C# instead. Visual Basic is going to be a DISFAVORED language this coming decade.
That’s what you get for trusting the evil company called Microsoft. You’re essentially trapped into their product development policies.
My resume is probably equally divided between .NET and Java (with a bunch of C++ too). I probably see five times more job prospects related to .NET than Java.
Intellisense and real time reference checking that actually works. LINQ. No silly delusions about platform independence actually meaning anything. Visual Studio being vastly superior to anything like IntelliJ or Eclipse. Astonishingly simple and robust web development capabilities that make servlets look like a hammer and chisel. Robust forms development tightly integrated to the windowing environment, not garbage like SWING...
So you mean if all I have are Linux and Solaris boxes I can deploy .NET apps?
As for big company support, sorry, but that doesn't really mean very much. Oracle could wind up in the same moribund condition that Sun or Borland/Inprise/Codegear have been in. IBM had a near-death experience in the 1990's. What matters is billions of dollars in fully depreciated, completely debugged code, and millions of programmers who speak the language.
No, I mean you can buy boxes to suit your development platform, and not pretend that the freedom to do otherwise is some big advantage.
.NET vs Java is just another version of the ‘least common denominator’ versus the ‘individually optimized solution’ trade-off. Sometimes one makes sense, sometimes the other makes sense.
The advantage of open source code, is that even if the company goes away, you still have the source code and can modify it.
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.