Java vs .NET
CHaN_316 writes "Yahoo is running a story called 'Is Java Finished?' It provides a brief overview of the strengths and weaknesses of J2EE and contrasts them with .NET. Classic arguments are brought up like Java being great for portability while .NET ties you down to Microsoft products, etc. It's interesting that they bring up the Java Community Process, and how it is a rather slow moving procedure that is causing Java to become stagnant."
I think there are several Java IDEs, which are better than VS. Try the latest VS.NET, it sucks bug time.
causing Java to become stagnant
Why would we not want a language to be stagnant? I wonder how much time is wasted just trying to keep up with changes to languages and development environments?
Think of this another way: What if .Net was designed by a single person in their garage, would it get the attention it does? Of course not. Dot Net is a real threat to Java simply because it comes from Microsoft (a mega-corp with plenty of access).
You may not like it (I know I don't), but that is the nature of things.
Sarcasm and hyperbole are the final refuges for weak minds
Saying .NET will never take off, just because it hasn't yet isn't entirely fair.
.NET has the entire Microsoft Machine behind it, and considering they usually do a good job of getting product acceptance regardless of whether or not its the 'better' product, I wouldn't count it out.
;-) ), I'd actually be quite nervous about .NET gaining ground.
I'm certainly a Java proponent, but I know full well
Between the friendliness and name-value that Visual Studio has, and the fact that when a manager is making a choice about a product platorm for project, they don't always factor in the developer's best interest (if ever
Strangely enough, I found that I was having some perf problems in my library functions that exactly modeled what MFC was doing in it's calls to the MS ODBC dll.
After quite some digging, I found that a call to a DLL function with exactly the same parameters by my API as opposed to an MFC call to the dll was way slower and in at least one case gave different results. Please note that I'm talking about perf on the function call alone, all other things being constant
Conclusion:MFC was 'rigged' to perform better with the MS ODBC DLL than a third party function call.
It wouldnt surprise me if there were similar reasons for performance differences between .NET and J2EE - thoughts?
Sounds like more MS FUD to me. So how many times has Java been declared dead/ dying now? .NET.
Where I work (for a DoD agency) we are developing J2EE solutions with open source tools in part to get away from vendor lock in, something that MS is particularly bad with. Once MS ratchets up the lock in with the introduction of DRM in Office file formats, I think MS solutions as a whole are going to become less attractive, and this will be a strong disincentive to adopt
I know this because Tyler knows this.
Carpenters don't buy from hammer companies that change their hammers every "release".
Sure they do, there's been a lot of innovation going into hammers lately. They release new versions of hammers constantly, and other woodworking tools - to many oldtimers dismay, who will swear up and down the hand plane they used in 1952 was an order of magnitude better than todays.
Stanleys Anti-vibe series of hammers, for instance, they have whats basically a tuning fork built into the handle. The fork vibrates and takes the energy away from your hand. Spend a day ramming nails in with a wooden handled hammer, then a day with one of the newer models, and you definately feel the difference.
They're also constantly adjusting the weights and balances, tweaking the shape and makeup of the heads/claws.
Go look at the tool section at home depot and get an idea about hammers.
I don't need no instructions to know how to rock!!!!
I know you're trying to be funny, but I mark my students' projects using my Mac dual G4. They were developed on PCs and *X boxen, but I run them on my own machine. If there are problems, we have a serious chat.
I teach advanced object oriented design and security. It keeps food on the table.
such as cell phones (J2ME) and Linux? From what I understand MS has no presence on cell phones (and there are a lot more cell phones than desktops) and they'll do their best to avoid needing to have a presence on Linux (i.e. bribe a down-and-out company to try and take out Linux in the courts).
.NOT.
I think Sun has done a great job promoting Java on a variety of platforms, so I think McNealy isn't concerned about
smd4985
I would try my best as usual to avoid both. Say I have to produce distributed networked applications that are portable. I'll just use QT. Say it has to be used in embedded systems too. I'll use ANSI C using gcc compilers everywhere, and use #ifdefs to make up for the difference.
.NET and Java to be efficient enough to be worth it. I'd rather hire more expensive coders who can do C/C++. I know it is 2003, but even for the most complex applications, I enjoy trying to run it on my Pentium 200MHz 48mbRAM 2GB hdd system with Windows 95 to check how lean and mean the code is. Just compare Opera with Mozilla and tell me what you like.
Therefore, I'll save my company big bucks, since they'll use less ram and storage to save and run the code. They'll also need lesser CPU/MPUs.
Say I have to work on an ERP system. The same combination comes up. I'll use a good database that runs on many platforms (DB2? Firebird? pgsql?) and the GUI frontend will use QT or glib or fltk or the likes.
I havent found abstraction layers (virtual machines?) like
"Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
Sun's not a monopoly and don't make it sound like MS gave the entire .NET framework to the ECMA. Nope, just the C# langauge and the CLI, this would be like Sun turning over javac and java to the ECMA but keeping a grip on anything beyond Java primitives, it's a bullshit token PR jesture. The JCP is a far more public process for directing Java than anything we'll ever see from MS for .NET.
Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
I program windows applications for a living. The productivity increases from .Net are just amazing. Plus it grants easy access to the Windows API for any "bare metal" stuff you need. After the Swing travesty I swore off developing Java client applications on Windows forever. Is Java dead on the Windows desktop? Yes. Does C# vastly improve the Java library? Yes. Is Java in danger in niche markets like embedded software or true cross platform server side stuff? No.
I swear its seems like 90% of the people who post to Slashdot never wrote a professional line of code in their life. The client doesn't care what language you use. They want something done as fast as possible for as cheap as possible that still meets their needs.
I checked on Java on it's early days when Sun had Engineers. Henry Wong I think was ( about 5/6 yrs back, don't actually remember who else was there) conducting the seminars.
Sun had a great promise. But, it is still a promise. I have seen so much bullshit around that language and half-progrmmers posing as object Gurus etc. etc. made me really sick.
Saga continued, DOT.COM made our company rich but Java made us poor.
We blew over 5 mil behind a product with good and bad programmers but still that product did to gain any ground. The we added some good marketing people ( yes they exist ) with lot of effort they made it barely sellable.
If Sun were spending half as much energy behind the hardware division their stock will not be in single digits today !
Now-a-days, when I go through resumes of new/experienced programmer, knowing Java AND not knowing C or PERL is a disqualification to me--these people will never get through the door.
There is no such thing as Java Programmer--either you are programer and program whatever language come in your way or you are just a total waste of space.
So, I guess, end of Java will end of lot of stupid people who should not have in the programming profession in the first place.
whatever
- People who believe other people have no right to live, got no right to live ...
I think MS is taking the opposite approach, but not on the size scale side.
.NET, and solves one real life problem that no other solution brings to the table, cross language compatibility.
.NET solves.
.NET becomes truly cross platform, great.
I am currently developing in
I can't remember the last time I had to develop a client (not web) application that had to run on 2 or more platforms.
In all my years, no one has ever said to me "build me such and such and make sure it runs on unix and windows without recompilation".
However, I have been on many teams where everyone knew a different language or paradigm.
This is the problem that
The VB and OO coders can finally work together and speak the same APIs.
If
Can't say that it will make a difference to me since I guess I'm the only person in the world who knows what platform they are devloping for up front.
Another way of looking at it is that Java is too encumbered by intellectual property--copyrights, patents, and licenses--held in part by Sun and in part by an industry consortium (JCP). Anybody that builds applications on top of Java becomes as dependent on Sun as people who write Windows software become dependent on Microsoft. While there are plenty of open source projects for both Java and Windows, ultimately, that is not a good state of affairs for open source developers.
WORA made sense for Java's original purpose in life, that of a thin, universal client platform. WORA makes no sense for Linux developers trying to develop high-quality Linux applications. (And, frankly, I think Windows programmers are saying the same about Java on Windows, which is why
Java held a lot of promise for open source development at one point, but I think that's over now. The Java platform will continue to be used widely in many commercial (and some free) server-side applications. Subsets of Java will be used in teaching and research. And you will see more and more partial clones of Java appearaing. Open source will probably continue with a mix of languages. gcj+SWT, which implements the Java language but not the Sun APIs, may achieve modest popularity. Mono+Gtk# may become fairly popular (but the
Technically .NET wasn't released until a year ago last spring. It's only been out about 18 months. Last fall it was clear that people using .NET were very early adopters, but uptake seems very strong.
To be honest, Java on embedded devices doesn't seem like that big a win to me at the moment, no matter how many cellphones they're trying to ship with it. Most Java in use is on the server side. And that is a big differentiator between Java and .NET: Java runs on pretty much any hardware you care to throw at it, which means you can scale your server from that itty-bitty Pentium box up to the biggest stuff Sun sells. With Windows you've got midrange Intel boxes and ... midrange Intel boxes. Little per-box scalability, and that means that large systems are going to be a pain to manage - particularly given how hard it is to manage Windows servers in bulk.
I can see .NET being useful for small servers that need to be put together quickly and cheaply; VS.NET is great for that. But it's not really there yet for big systems, both in terms of framework maturity and OS scalability and stability.
Mostly I think we'll see .NET be used in building GUI applications in the near term. Let there be no mistake, it is phenomenal at that.
jim frost
jimf@frostbytes.com
The MS Visual Studio
Try Netbeans.
C# is one programming language I've stayed away from--and for no particular reason. I had picked up the C# specification [PDF] in 2000, but never really got down to the canonical "hello world" program. Today in 2003, as I look back, I guess I haven't missed much.
Let's go back to August 2000 and revisit Hejlsberg's famous O'Reilly interview by Josh Osborn.
I'll agree with client side stuff, but I've been in a situation in the past where we developed a server size web app (in J2EE) on a single nt4 server (purely for ease of access). Then when we went gold, capacity grew and it moved to a cluster of linux servers. Then when the business picked up and capacity grew in large amounts we moved to a couple Sun E6500s. .NET wouldn't have allowed us to migrate like this.
It was originally intended to illustrate various Java technologies and the application of those technologies. It was intended to be a *teaching* tool.
.Net programmer can do it so much more efficiently.
.Net.
To take such an illustrative example, rearchitect it, then make any claims about efficiency, is/was ludicrous. Like taking sample code out of a book on Java, and then showing how an expert
Do some more research and you'll find that the Petshop project has been completely discredited as a comparison of Java and
By coincidence, I gave a talk on how Java and .NET compare, just a few days ago:
t ml
.NET has a lot of things "in the box" that a developer / team needs to go find, select, download, install, etc. for Java. I personally like the best-of-breed approach that can result from that (choose from the many SOAP implementation, choose the best one for our needs), but for many developers, having a good-enough solution "in the box" is more palatable.
http://kylecordes.com/story-260-java-net-talk.h
One thing with the SD Times identified as a source of trouble (the size of the included libraries), I identified as a strength:
This is particularly exacerbated in some development shops where extensive format decision and permission processes are needed to make any third party tool purchase (or free software adoption).
I'm posting late, so I doubt anyone will read this:
Java has needed this for a long time. Ever noticed how long it took to get a For...Each statement in Java?
So you've shown that .NET jobs are close to J2EE jobs, yet C# jobs are lower than Java which to me shows, in a way, how you can use the .NET platform and not be tied down to one specific language.
If Sun keeps the enhancements coming and works to bring the development environment up to Visual Studio's standards (Yes, VS has its problems, but it has a lot of unique tools, like compile-and-continue, which save hours!), Java may well survive.
Check out Eclipse for Java development. The workspace/perspective paradigm will take a day or two to get used to (plus the different key bindings), but this is a really nice IDE. I'll wager that MSFT will be copying the "lightbulb" feature of Eclipse that shows you a list of possible solutions to the problem, alongside a preview of the code changes this will entail. Very slick. The GUI could be a little more responsive, though, but so could VS.Net 2003 on a 1.8GHz P4.
I don't think it has a form designer, but for the big projects Eclipse is geared toward those can be more liability than asset.
What?? .NET is a programming language?? I had no idea, i tried to read the Microsoft marketing crap but i couldnt figure out what .NET was other than an "enterprise solution" (something we're trying to sell to big companies), a "set of software technologies" (something that comes on a CD) and a "new generation of technology" (upgrade from whatever we sold you last year)
This comment does not represent the views or opinions of the user.
You're premise is flawed. You act like .Net is some kind of miracle Rosetta stone. Far from it. If your going into a project that you want to be an all java project, you have the developers that don't know java, learn it. Now if you have a group of developers and they all know C, C++, Perl, Java, whatever and you want their project to be a .Net project. Then every single one of them is going to have to relearn their tools because they have to learn how to use the CLI in addition to their preferred language. And then after your project is complete, you have a hodge-podge, a patchwork quilt of a system in which you are eternally going to need each kind of developer on staff in order to make modifications. This is exactly the opposite situation with java, where standardization of language and libraries make bringing in new developers almost trivial. .Netization might be touted as the end to all woes, but in the long run it can bring about many more woes than you ever knew you had. So what are the drawbacks to using java? People who don't know it have to learn it. Thats it.
Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
If you ignore that little bit of marketing idiocy then .NET comes down to being Microsoft's take on Java. In fact, it's derived from Microsoft's version of Java. When Sun sued Microsoft over compatibility issues Microsoft didn't just throw that work away, they changed it into .NET.
What they did, and this is clear from the VM language and APIs, is take the JVM pretty much intact and renamed the class library packages, classes, and methods using a slightly different naming scheme. If you know JDK 1.1 you are already familiar with a lot of the .NET foundation classes except that the packages have moved around.
On top of that Microsoft added some data management classes (not all that different in concept to JDO), a hell of a lot of UI and forms-management classes, web service support, and lots of XML support. And of course they integrated this well with their IDE.
Aside from doing a very good job with UIs, ASP.NET is hugely improved over the previous version of ASP (which, IMO, was disgusting). They still have pretty minimalist support for sessions if you ask me, but then again stock J2EE isn't really any better.
So: It's Java, with extensions both Windows specific and generic, with multiple source languages, and a nice IDE that has a bunch of code generators built in.
Getting back to this stuff being derived from Microsoft's version of Java, I think that in the long term Sun's lawsuit against Microsoft for "polluting" Java (which, in any objective view, Netscape was far more guilty of) will prove to have been a very big mistake. Back when Microsoft was trying to do Java Sun at least could control to some degree what direction they went. By forcing Microsoft to abandon Java entirely they are trying very hard to leverage the technologies to their maximum advantage.
And, to put it bluntly, they are doing a much better job of it so far than Sun has. Sun still has a huge edge in many areas due to J2EE's maturity, but I wouldn't expect that to last all that long.
Personally I think this is great because it means that we're going to have to see rapid development of usable systems in Java land, something we really haven't seen in years.
jim frost
jimf@frostbytes.com
Just to clearify, I am a low level hacker with C on the brains. I am not a bread and butter VB guy. If I wanted to make a quick and dirty GUI though, I could use VB 6 because my company owns it but more importantly, there was no complexity at all. Almost half the things I did were in the realm setting property X to value Y. Simple, quick, done.
VB is not as much a programming language that became a GUI, but a prototyping tool that became a programming language. The move to VB.NET has taken away all the language simplicity making it a fully fledged language, but made it difficult enough to negate its benefits over other products that fall within its same niche. I do my quick and dirty GUI's in Jbuilder now. If I have to use a fully fledged language, I would rather use a portable one.
Bye!
That's a very GOOD point! The thendency now is to develop everything with a WEB front end but why???
I'm fairly sure you don't need your accounting program with web interface and don't forget that inventory program developed with ASP ??
What the F*!!!
Some interfaces are just ackward if they are implemented as web applications.
Please STOP trying to write everysingle thing for the web. Only a small percentage of applications benefit from it.
Even for applications where you realy need to show web result to your clients... they can be just "REPORTING and CONSULTING" addons to your application not the hole fundation of it!
BSD licensed software can't be stolen....
I would have to agree. All my professional life has been writing web-based apps. My current company has been for years trying to move everything to web-based so that way we aren't looked down to a certain desktop OS. The problem is that our new CRM uses a lot of Javascript to do all the complex stuff a web page can't do, so complex it only works right in 1 browser, guess which one. Thats right IE. This totally destoys the previous vision. My CIO knows jack shit and I will laugh when this all fails. I just jumped ship, away from the web department and to security department. I saw that ship sinking.
> If you'd like a demonstration of the difference .NET vs Java, .NET (it's written in C#)
.NET's behaviour differs from the ECMA spec, who's right, ECMA or Microsoft? Who gets to decide how things will evolve --- ECMA, or Microsoft? And of course .NET is much more than what ECMA has blessed. I doubt we'll see ADO, ASP.NET, System.Windows.Forms or a bazillion other APIs that you need to write actually useful applications in ECMA anytime soon.
.NET.
> between the run-time execution of
> pick your favorite VM and run Forte, then run
> Visual Studio
That is a lie. VS.NET is not written in C#.
> There is a lot of FUD being disseminated about
> "Microsof is going to sue Ximian, et al. for
> Mono" blah,blah,blah. That's not going to
> happen.
Your omniscience is impressive.
Microsoft has gotten EMCA's stamp on C#, the CLR, and the basic Framework, but they still control them with an iron grip. When
Even if you're willing to go beyond ECMA and port the Microsoft proprietary APIs to other platforms, the fact is that System.Windows.Forms is absolutely NOT a cross-platform GUI toolkit. The Mono guys are implementing it by sucking in WINE! There is simply no Microsoft-blessed cross platform GUI toolkit for
Just more capacity. The NT4 box was just for convenience, it was what the developers had on their desks. The linux boxes were our first production environment, but turned out not to be powerful enough to handle everything when we got more traffic and the app got more complex capabilities. When we went to the e6500s it was actually a mixed environment. We had some things running on those e6500s, some things stayed on the linux boxes. Mind you, this could have been avoided by better planning, but java's portability let us do a bit of exploring first.
There are a lot of great things happening in the Microsoft world, but the marketing hype totally distorts technical terms so that they mean nothing. Take the term real-time OLAP. If you use real-time ROLAP, the performance is horrible and ends up creating a ton of threads. The cost of context switching jacks the CPU usage up to 90%+. If you use MS Analysis Service with MOLAP and a set interval refresh the performance is way better. But here is the catch. Don't try it with a database with more than 20 million rows of data. Anything under 1 million rows is fine, but over that you're going to see a huge performance drop off. The same is true of Biztalk and the other servers in the .NET family. Anything that isn't truly concurrent request is fine. Again, this all goes back to the core of windows threading/scheduling model. Even with 4 2ghz CPU, sql server can't handle huge datasets and scale up gracefully. The only way to get it to scale gracefully is to use COM+ on the client side to queue the queries and not overload Sql Server. Once you overload Sql Server it will hose itself.
so what does this all mean? If you want a fast, rich and good looking fat client, use C++. But if you want portability, use Java. If your loads are tiny, as in 1-2 concurrent requests at peak, then you're fine. Anything over 10 concurrent requests that does moderate lighting will not scale well. It can scale, just not well. You have to spend considerably more time to stabilize and tune .NET to get it to scale well than the equivalent Java solution.
people should look at their project requirements, budget and development time. choosing one or the other because of marketing is stupid. doing what works best within your given constraints is the professional way to do it.
This isn't always true. I am a developer for a fortune 500 company and we just finished a huge Java vs .Net comparison. The company brought in a lot of outside opinions and had us devlopers give opinions as well. Of course an MS rep was there telling the tall tales to all the PHB's of how .Net would make us 10x more productive and save us millions (just like the commercials), though the figures did not include all upgrade costs for Win2003 Server and WinXP cost. When it was all said and done, just about everyone picked Java, except for the MS rep and a few VB/ASP only type guys who don't have the technical ability to program much more then a few asp pages. It all came down to Java is proven to be stable and secure. MS and their technologies have not and especially .Net. We also have many mission critical apps that just cannot be trusted on an MS platform so they run mostly on Solaris and now some Linux boxen are popping up. Java gives us the ability to choose the right tool for the right job. .Net would have locked us in to just MS and severly limited choices. Once we as developers got that point across to the PHB's, they were able to see the light.
If Tyranny and Oppression come to this land,
it will be in the guise of fighting a foreign enemy. -James Madison
problem with .NET is Microsoft is still encouraging bad development habits. I can tell you first hand from reading ASP.NET code written in VB that it is horrendous. Most of the examples included with .NET do not use good OO practices for the C# examples. The worst part is it encourages the same lazy hard to read coding practices. Without fixing that, it won't make .NET any cheaper, it's just another trick to milk more money from customers.
Yes. Get yourself a cygwin setup. Create a Makefile win32 project in VS.Net. Set your PATH and other ENV vars in the VS preferences, then setup your makefile to use GCC. You will have to edit your makefile manually whenever you add to your project unless you write a plugin. Nonetheless, you will be smiling after your first project.
The IDE absolutely kicks arse. Most of the arguments here appear to boil down to VS.Net sucks because it's cool to hate Microsoft.
If you are running pure Linux and can't abide Microsoft for whatever reason, I suggest you get Anjuta. Anjuta is great for building Linux projects particularly of the gnome variety.
As a sidenote, I just finished a rather large project using JBuilder, and I must say that I like it very much. I still think VS.Net is the #1 IDE on the market, but for java, JBuilder is quite nice.
I just did a job search on monster.com:
.NET programmers...
c# - 704 results
java - 4398 results
Yeah, there's just SO much more demand for
The battle for the hearts and minds of developers is heating up, with .NET starting to compete fiercely with Java. The war is being waged mostly inside corporations -- department by department, and project by project. True, many companies will use both technologies. But because Java traditionally is considered more complex and difficult to use, .NET will have the edge in some head-to-head comparisons.
Ease of use is not the only advantage .NET has over Java. A more refined and advanced security model, greater flexibility in platform specific optimization, arguably richer class libraries, arguably better performance, better garbage collection system, etc.
On the other hand, developers who want cross-platform interoperability will take Java, hands down.
Yup. Right now, .NET is really only full blown on Windows. It has some beta level support on Linux (via the Mono project), and has decent support on BSD-based OS's like MacOS X, FreeBSD, and OpenBSD, but some of the best features of .NET (ASP.NET, ADO.NET, WinForms) aren't yet fully implemented on any platform but Windows.
Can Microsoft (Nasdaq: MSFT - news) blow Java out of the water? Not likely. But even Sun Microsystems (Nasdaq: SUNW - news) recognizes that improvements to J2EE and other Java technology will be key to holding on to and increasing the Java developer base. For Sun, the next two years represent a critical time in the maturation of Java and its market position.
It wasn't likely than Sony would blow Nintendo out of the gaming market either, but it happened. For Windows development, the game is pretty much already over. .NET will be the clear winner. As far as Microsoft is concerned, that was the goal from day 1. Getting non-Windows development onto .NET is an added bonus if it happens at all.
I don't really see how Java/J2EE is targeted at "high-level developers" and more than .NET is. It's certainly more "high level" than Visual Basic, but that's not saying much. Java can be difficult only because most of the development tools suck. (No, not including Eclipse. Relax.)
The first fruits of that effort will come in J2EE 1.4, which will include an expression language for development that uses scripting instead of programming language, as well as a standard tag library, Gallantine told NewsFactor.
Cool. But ASP.NET is a lot more than a standard tag library, which is what I'm assuming Sun is trying to target with these improvements. Doesn't JSP already have tag library capabilities? Can't you already develop your own custom tags? At any rate, the scripting stuff should be interesting, but it's something that .NET can already do.
J2SE (Java 2 Standard Edition) 1.5, scheduled for beta early next year, also will boast ease-of-use features. "It will allow developers to use less code to write the same functionality," said Karen Shipe, product line manager at Sun. For example, J2SE 1.5 uses generic types that enable developers to avoid having to code in a specific data type each time they want an application to access data. And J2SE will offer monitoring and management features for sysadmins, including better error messages, stack traces and new logging capabilities.
Generics rule. The next version of .NET will have them as well. But they hardly make programming easier for
Microsoft said MFC was cross-platform compatible. They said DCOM was cross-platform compatible. I suppose some weak argument could be made in either case, but let's face it, no software from MS will ever be portable in a useful way. They don't want it to be.
Shoulda used the preview button!