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: Mr. Jeeves
Microsoft offers great development tools for an inadequate platform

I gather you mean that Windows is an inadequate platform compared to say LINUX or other flavors of UNIX ?
41 posted on 05/11/2010 7:33:42 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 40 | View Replies]

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

That's one hell of a stop gap right there. All this development for what in effect will amount to nothing ?



42 posted on 05/11/2010 7:37:53 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 36 | View Replies]

To: SeekAndFind

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


43 posted on 05/11/2010 7:48:32 AM PDT by Windcatcher (Obama is a COMMUNIST and the MSM is is armband-wearing propaganda machine.)
[ Post Reply | Private Reply | To 18 | View Replies]

To: Windcatcher

I’m very curious to see what Oracle is going to do with the JVM.


44 posted on 05/11/2010 7:49:27 AM PDT by dfwgator
[ Post Reply | Private Reply | To 43 | View Replies]

To: dfwgator

I agree. Different tools for different situations. I might differ with your list of choices, though. :-)


45 posted on 05/11/2010 8:07:57 AM PDT by B Knotts (Impeach Obama)
[ Post Reply | Private Reply | To 39 | View Replies]

To: B Knotts

DING DING DING!! We have a winner.


46 posted on 05/11/2010 8:21:52 AM PDT by HamiltonJay
[ Post Reply | Private Reply | To 38 | View Replies]

To: HamiltonJay
.Net is a joke compared to the Java world,

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

47 posted on 05/11/2010 8:27:04 AM PDT by libh8er
[ Post Reply | Private Reply | To 32 | View Replies]

To: libh8er

Apache POI is a godsend, I can manipulate Excel Spreadsheets without even having to have a copy of Excel.


48 posted on 05/11/2010 8:29:37 AM PDT by dfwgator
[ Post Reply | Private Reply | To 47 | View Replies]

To: SeekAndFind

I’ve programmed with both Java and .net,.....I’ll take .net any day.


49 posted on 05/11/2010 8:38:35 AM PDT by domeika
[ Post Reply | Private Reply | To 1 | View Replies]

To: libh8er
I have worked with both, and there is absolutely no comparison. Basically .NET allows a relatively weak programmer become productive in the distributed space, unfortunately most of their productivity will be sub par.

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.

50 posted on 05/11/2010 8:40:06 AM PDT by HamiltonJay
[ Post Reply | Private Reply | To 47 | View Replies]

To: domeika
I’ve programmed with both Java and .net,.....I’ll take .net any day.

From programmer to programmer, I'd like to hear your reasons for favoring .NET over Java ( is it C# you are developing in, or Visual Basic ?).
51 posted on 05/11/2010 8:40:34 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 49 | View Replies]

To: HamiltonJay

I HATE VB.NET!!!!!! Why would anyone use that instead of C#?


52 posted on 05/11/2010 8:43:36 AM PDT by dfwgator
[ Post Reply | Private Reply | To 50 | View Replies]

To: HamiltonJay

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 you’ve built your business on VB6 over the last decade or so, you’ll 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. There’s nothing too wrong with that provided you don’t 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 isn’t 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, it’s a “nested function”. Now this isn’t very common, but there are languages which do allow you to do this – ALGOL68 and Pascal being two that I’m familiar with, and I’m 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 it’s uses – I’ve used it myself in some ALGOL68 programs.

Anyway, the point here is that if you’ve 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 doesn’t do anything apart from tell you that you can’t. 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 Microsoft’s 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 I’ve 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.


53 posted on 05/11/2010 8:47:19 AM PDT by SeekAndFind
[ Post Reply | Private Reply | To 50 | View Replies]

To: dfwgator
So from a career standpoint, if you only could know one technology, choose Java.

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.

54 posted on 05/11/2010 9:21:07 AM PDT by Minn (Here is a realistic picture of the prophet: ----> ([: {()
[ Post Reply | Private Reply | To 31 | View Replies]

To: SeekAndFind
From programmer to programmer, I'd like to hear your reasons for favoring .NET over 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...

55 posted on 05/11/2010 9:30:33 AM PDT by Minn (Here is a realistic picture of the prophet: ----> ([: {()
[ Post Reply | Private Reply | To 51 | View Replies]

To: Minn
No silly delusions about platform independence actually meaning anything.

So you mean if all I have are Linux and Solaris boxes I can deploy .NET apps?

56 posted on 05/11/2010 9:32:14 AM PDT by dfwgator
[ Post Reply | Private Reply | To 55 | View Replies]

To: SeekAndFind
Yeah, and there are millions of lines of legacy code written in COBOL, too, and contrary to popular belief it isn't all just sitting on archive tapes. I'm not suggesting Java is going anywhere any time. In fact, I don't believe C and C++ are going away either.

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.

57 posted on 05/11/2010 9:32:53 AM PDT by FredZarguna (SEC: "litigation against Apple by multiple Federal agencies is likely and imminent.")
[ Post Reply | Private Reply | To 27 | View Replies]

To: dfwgator
So you mean if all I have are Linux and Solaris boxes I can deploy .NET apps?

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.

58 posted on 05/11/2010 9:37:34 AM PDT by Minn (Here is a realistic picture of the prophet: ----> ([: {()
[ Post Reply | Private Reply | To 56 | View Replies]

To: Minn

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


59 posted on 05/11/2010 9:42:20 AM PDT by dfwgator
[ Post Reply | Private Reply | To 55 | View Replies]

To: FredZarguna

The advantage of open source code, is that even if the company goes away, you still have the source code and can modify it.


60 posted on 05/11/2010 9:43:28 AM PDT by dfwgator
[ Post Reply | Private Reply | To 57 | 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