|Notify me of new responses|
I'm trying to understand why MIT would have chosen .NET over J2EE as
the toolkit for developing Internet applications. MIT comes from the
open-source and Unix world (and a lot of people there do anything
they can to avoid anything Microsoft-related), so it would make sense
for them to choose a more vendor-neutral platform (e.g.,
Apache/Tomcat/Java) and all the other open development tools
Would that be a fashion statement as well? What are the particular
advantages of .NET over J2EE that made it the superior choice? In my
mind, I would look at a solution that didn't require paying
Microsoft's excessive licensing fees, and that used as much open-
source software as possible.
And what about security? A poorly-configured Apache server can be as
bad as a poorly configured IIS server, but isn't it apparent
that .NET servers will be less secure than their open-source
counterparts (given the security track record of Microsoft products --
at least in the short term)?
-- Marcelo P. Lima, April 10, 2002
MIT as a whole is pretty wealthy but individual IT budgets tend to be modest. With only $1 or $2 million to spend per system MIT needs to put its money into capabilities that are valued by end-users. A true J2EE system would involve EJB and container-managed persistence. All of that automatically generated SQL code from the application server can be 100X slower than hand-authored SQL, which means MIT would have to buy 100 times as much computing hardware to support the same application. Not to mention that projects that built on top of J2EE are famously unproductive, expensive, behind-schedule, and inflexible. If you had a $20 million, 3-year budget to build something simple like photo.net, you could certainly do it with J2EE (or raw C with the Oracle C library for that matter). But MIT needs to produce things sort of like photo.net with a few undergrads hacking away over a summer. And they need to be able to tear down 20 percent of it and add another 50 percent the next summer as ideas evolve.
J2EE also looks like a classical IT dead end. There are dozens of different application servers and execution environments for Java. All have subtle differences so that an application built for, say, WebLogic won't run under Tomcat or Websphere. Maybe the application be ported by changing only 1 percent of the code but it isn't obvious which 1 percent. This is the same situation that Unix presented in the early 1990s. An AIX application wouldn't just work on SunOS or HP-UX. Close but not compatible. Faced with all of these choices, most application developers chose to develop only for Windows. In the amount of time it would take MIT to evaluate and select the right Java application server, V1.0 of a system could be built and launched using the Microsoft tools.
Anyway, it wasn't my decision. I'm a humble volunteer teaching one class out of nearly 1000 classes. The MIT bigwigs don't come down through the ranks to ask for my advice and I don't offer it unsolicited. But certainly if the decision makers came to my 6.171 classroom they would not find any support for using J2EE. About half the class elected to use the Microsoft .NET tools. The other half of the class is using simple Java Server Pages. Not a single graduate of the course will be experienced with programming in any J2EE environment. So if MIT wants something that can be maintained and extended by its students and graduates, Microsoft .NET is a logical choice for that reason as well.
(Your security question is beyond my area of expertise. I guess I'd be prepared to believe that both WinXP and Unix/Linux will require substantial sysadmin investments to be kept secure and that neither can be left unattended.)
You raise some good points about Microsoft licensing fees but they don't apply to MIT. We get most things for free or cheap. We don't need too many CPUs because we have fewer than 10,000 students. It is not as though we need to rack and stack thousands of machines. If I were building something that I wanted to give away to every organization in a Third World country I'd ask myself if a Microsoft world in which the basic software costs more than the hardware made sense. But if I were building something to sell to big companies, I'd build it on Microsoft .NET because I could be sure that they would have Windows servers and even if I liked J2EE I would never be able to know in advance which variant of J2EE they'd adopted.
-- Philip Greenspun, April 11, 2002
In response to your message below... The J2EE zealots seem to think that a two-tier straightforward and understandable JSP site is not "true J2EE". Jin Choi and cohorts did a nice JSP version of ACS 3.4 and people complained that it wasn't "sufficiently J2EE" because you could still recognize some fragments of SQL and HTML in the code.
The vast array of choices that you see as an advantage for J2EE I see as a disadvantage. If I were paying a group of programmers, I'd want them solving my users' problems, not evaluating different "operating systems, development environments, databases, web servers, servlet engines, and application servers". The end user can perceive only data model and page flow. I would want all of my programmers' energy focussed on these challenges and not on the tools. My students who elected to use Microsoft .NET tools spent an average of two hours setting up their systems. Those students who elected to go the J2EE route wasted two weeks and ended up having to drop the course because they couldn't get their application servers up and running (despite the fact that all of these students had at least one semester of Java programming experience).
As for your long run argument, Ben... I noted that J2EE did not seem viable for the long run due to the plethora of incompatible systems. But I forgot to mention that the most serious problem for J2EE's long-run viability: the Java language. The idea that every programmer in a large organization will want to use the same computer language seems fanciful. IBM tried, in the late 1960s, to browbeat everyone into using PL/I. It was more widely adopted than Java but never crushed Fortran and Cobol like it was supposed to. Today, 20+ years after PL/I's peak, it is tough to find anyone who even remembers the language.
Why won't everyone want to program in Java? The novices will want scripting languages and declarative languages. The experts will want to program with features from modern computer languages (Eiffel, Lisp, ML). The speed freaks and hardware nerds will want languages like C. The Microsoft tools (IIS, Active Server Pages, .NET runtime) aren't tied to any particular computer language and recognize that an organization will have a diversity of programmers and therefore a diversity of programming languages.
[All of this ignores the fact that Sun greatly hastened the demise of the Java language by picking a fight with Microsoft (Sun's 1997 lawsuit, for example). They're now in the position of saying "Java is the world standard computer language except that you can't really use it to develop an application for computers running Microsoft Windows, i.e., for 85 percent of the world's computers."]
A theoretical discussion about programming tools can be entertaining for a few minutes. But here we are in the 8th year of Java and it should be easy to judge the tool by results. Where are the great sites that have been built with Java? On time and under budget? You see a lot of nice Perl sites, e.g., Slashdot. You see a lot of nice VB/ASP sites, e.g., Netflix. You see some weird things, such as Amazon (C plus proprietary scripting language) and Orbitz (Common Lisp back end; see http://www.paulgraham.com/paulgraham/carl.html). Even Sun's marketing staff can't come up with anything interesting built with Java: see http://java.sun.com/products/jsp/success.html and http://java.sun.com/products/servlet/success.html .
Oh well, that came out sort of long and negative. I guess I should close on a positive note. From a brief scan of their marketing PowerPoints, it looks as though the Java/J2EE folks have realized that interfacing to other languages will be necessary. They want everyone to learn and use CORBA! That should provide us all with many years of entertainment.
-- Philip Greenspun, April 20, 2002
I think you are throwing out the baby with the bathwater. Many companies use J2EE but don't use EJB persistence. EJB persistence isn't the solution to everything in the Java world. It makes sense when you have a piece of functionality that you would like to package and sell to many customers or developers without dictating their choice of database. MIT would not need that, and they could create SQL manually and either create a data access layer or just embed the SQL directly into the JSP. So the performance would be comparable to .NET.
Java allows you to have many options in building an application. You have choices for operating system, development environments, databases, web servers, servlet engines, and full-blown J2EE Applicaton Servers. It's possible to choose a set of these that performs badly as you described, or efficiently like the original ACS. Using .NET limits the choices considerably.
Java also has excellent security. .NET supports multiple languages and allows developers to make mistakes that are not possible with Java. You can run Java applications with open source Apache and Tomcat, which have a better track record for security than Microsoft.
In the long run, the competition (both closed and open source) in the Java arena will lead to better products than Microsoft will be able to offer.
-- Ben Ballard, April 16, 2002
As an example of a nice Perl site, Philip gives Slashdot. This is a rather arguable example, though I personally like it, many people don't.
As the local mod_perl zealot, I'd point out http://www.imdb.com/ as the ultimate Perl site.
I also agree that Java/J2EE going to CORBA should provide us with plenty of entertainment.
-- Pierre Phaneuf, April 20, 2002
I see your point, and I think there is a lot of sense in it. My company's product is written with Java, and since working here I have become most proficient in that language. Aside from my own preferences, I have a lot of respect for Bill Joy, James Gosling, and the other folks who created Java, and from what I understand, they solved a lot of the problems of C and C++ with the Java language. For many companies, the lower performance is worth it to have more reliable software that was developed in less time. Also one of these days they may fulfill the original purpose of Oak, the predecessor to Java, and there will be many little embedded devices that people will be able to develop software for in Java.
That being said, I'm not crazy for J2EE, and would prefer to create 2-tier or 1-tier applications around Oracle. I like to write my own SQL, and keep the interface simple. I want both speed and reliability.
Sun has made some serious mistakes. In addition to starting an unproductive war with Microsoft, they've pissed off a lot of their best users by not giving it away as open-source, and not cooperating fully with groups like Apache Jakarta. It will be interesting to see what happens in the next few years. I wouldn't mind if .NET and Java become acceptable options that can interoperate.
-- Ben Ballard, April 23, 2002
In my opinion, Microsoft programming tools are a lot like fast food on a road trip. You are in a rush and it is easy to pick up and you seem to initially save time. Near the end you feel bloated and sick(that not to say proprietary solutions from Sun are _that_ much better). I hope that Microsoft is unable to destroy the World Wide Web via its .NET initiative. .NET is simply a proprietary client server application that wraps around web standards (xml, html, soap etc).
I wrote a little rant on what I think about IE only sites.
-- Anthony Barker, July 10, 2002
Philip mentioned in his response that half the class chooses ASP.NET and the other half chooses JSPs. I wonder what the percentage is that choose alternatives like Perl, Python, PHP, Tcl, etc. However, in the Internet Application Workbook Philip suggested not to dismiss these scripting languages. I wonder what percentage of the course chooses such an alternative route and why they tend to shy away from it so much. Are there any overwhelming reasons?
-- Kendrick Hang, September 15, 2003
choosing asp.net has many advantages some of them I describe here. In asp.net we can reduce the code. Asp.net -ide has importent tools for creating server side controls and easy for validation control. Developer don't need to learn so difficult coding as in J2EE. Asp.net support event-driven programming in which developer can easy understand and debug the coding in less time. One thing of using asp.net is that asp.net is not so case-sensitive as java. But there is one major disadvantage of using asp.net is that asp.net tied you up in Micrisoft Environment.
-- jitendra kumar prajapati, March 10, 2004
I've had the opportunity to develop applications in both .NET and J2EE. The main advantage I observed about .NET was that a shorter development time could be accomplished. For example:
With EJBs, if any change were made to a class file or EJB in particular, it would require that the entire application be repackaged and redeployed. With some application servers, you are able to skip the step of repacking by working in an exploded environment, but redeployment or restarting the app server was always necessary. At least this was the case with JBOSS, WebLogic and Oracle 9iAS. Depending on hardware the entire process can take up to 3 minutes. Considering that 1 line of code change will cost you 3 minutes to deploy, it all adds up to much wasted time.
Another advantage of ASP.NET to J2EE is that everything is tightly knit. With J2EE, the benefit of being able to pick and choose your components comes with a cost. I would not be surprised if students were unable to setup the J2EE environment in 2 weeks. We had oracle consultants come in for 2 days and leave with no clue of why the environment was so unstable. Application servers are often tested with outdated specifications. Very few application servers are ready to support the latest technologies that IT managers and developers want to use. It is true that MS does not offer the flexibility that J2EE offers. But at the same time it lends it self to fewer headaches.
Performance is another advantage of the .NET platform.
The biggest advantage I see in J2EE is cost. Because of its nature, and the fact that we are able to pick and choose, we are able to pick the environment we see fit. It is possible to develop a full blown J2EE application without ever spending a penny on application server software, operating systems, and databases. Open source does come with its costs in terms of Âno support or serviceÂ. But very often, you will find that the open source community can help you resolve most if not all the issues you may run into. IÂm not going to argue for or against open source as it would be out of the scope of this thread.
J2EE is not susceptible, or at least not as, to vendor lock-in. It was mentioned that only 1% of code needs to be changed, but that 1% is not always obvious. Although IÂve never actually ported an application to one vendorÂs server to another, we did come very close. We sat down and evaluated what would be involved, and found that no code changes were necessary. The only files that needed to be altered were 2 xml files. The ability to move an application from a $100k server to an open source server is a huge deal.
In conclusion, I canÂt argue that one platform dominates the other. I think the two technologies cater to different but similiar group of consumers. They should be able to co-exist for quite some time. For purposes of marketing yourself in your career, IÂd say that it doesnÂt hurt to know both. Using either of these technologies in a project will require careful evaluation,
-- Vincent Wong, March 12, 2004
I know the original question was posted 2 years ago, and I know that .NET has become more mature since. I have developed enterprise level apps with C#, vb.net and asp.net. I have also developed J2EE apps using the Struts framework and recently Weblogic Portal 7.02 and 8.1.
The gist of what I have experienced is that .NET is cheaper, and faster to develop than J2EE.
If a company came to me and asked which platform they should go with, it would defintely depend on how big their budget is and when does the application have to be deployed into production. Everything costs more with J2EE: Hardware costs more, software developers cost more, software licenses (for example, Weblogic) cost more...and because it takes longer to develop a J2EE app, you need a lot more cash to fund the project.
Typically, large corporations have gone the J2EE route because there is a "perception" that J2EE apps perform better and large corps don't have the same budgetary constraints as smaller companies. Also, large corps don't like quick changing technologies because of training and support issues. So when .NET came in and IT heads were told that their legacy asp web apps and COM COM+ architecture were no longer compatible with .NET, many saw java and unix as a viable option.
From a performance point of view, there are still debates to this day as to which platform is more stable, scalable, and has better performance especially under heavy load, so I'm not going to add fuel to the debate. Obviously, slick sales individuals and indoctrinants from either camp will try and sell you on the benefits of using their platform. What I will say is that regardless of platform, optimal application performance depends most on the software architects and engineers. I have seen horribly hacked out applications in both .NET and J2EE.
-- Tom Hutch, April 7, 2004
Hi Advantages of Asp.net over J2ee The vast array of choices that you see as an advantage for J2EE I see as a disadvantage. If I were paying a group of programmers, I'd want them solving my users' problems, not evaluating different "operating systems, development environments, databases, web servers, servlet engines, and application servers". The end user can perceive only data model and page flow. I would want all of my programmers' energy focussed on these challenges and not on the tools. My students who elected to use Microsoft .NET tools spent an average of two hours setting up their systems. Those students who elected to go the J2EE route wasted two weeks and ended up having to drop the course because they couldn't get their application servers up and running (despite the fact that all of these students had at least one semester of Java programming experience).
As for your long run argument, Ben... I noted that J2EE did not seem viable for the long run due to the plethora of incompatible systems. But I forgot to mention that the most serious problem for J2EE's long-run viability: the Java language. The idea that every programmer in a large organization will want to use the same computer language seems fanciful. IBM tried, in the late 1960s, to browbeat everyone into using PL/I. It was more widely adopted than Java but never crushed Fortran and Cobol like it was supposed to. Today, 20+ years after PL/I's peak, it is tough to find anyone who even remembers the language.
Why won't everyone want to program in Java? The novices will want scripting languages and declarative languages. The experts will want to program with features from modern computer languages (Eiffel, Lisp, ML). The speed freaks and hardware nerds will want languages like C. The Microsoft tools (IIS, Active Server Pages, .NET runtime) aren't tied to any particular computer language and recognize that an organization will have a diversity of programmers and therefore a diversity of programming languages.
-- ss ss, May 6, 2004
At the end of many articles and many opinions I am more informed on the standpoints of the two sides, but in fulfilling my objective, viz. to choose the 'right candidate' for a web application, it has left me no wiser.
Is there any statistics - HARD FACTS, out there? Which compare different development efforts using these two competing technologies, in terms of complexity of project, time it took to develop, other costs, scalability of it, etc. ?
-- Venugopalan Govindan, May 28, 2004
Use what you know. Any "discussions" of one over the other generally turn out to be pointless.If you are more comfortable with one over the other, then use that one. If you don't know either, start learning them both and see which one is easier. Because ultimately it is the programmers design that matters
we can argue a lot in both ,but you can pretty much do everything you need in each one.
Considering .net running in other platforms dont worry there is something called mono(www.go-mono.com) a open source project done by minguel which enables asp.net/c# applications to run on apache and linux so now you have the server security.
-- sabari nath, June 10, 2004
One thing that it is completely designed n analysis product of MICROSOFT not a middle wire tool/product.Things r inside .Net really superior rather J2EE existing featurers.One thing m lacking n feel that DESIGN PATTERNS OF .NET OVER JAVA/J2EE DESIGN PATTERNS.It's very user friendly too n supports multiple language support environment which is not done by J2EE.
Security is the main aspect for every.So .NET will be less secure than their open-source counterparts.
-- Anupam Kapoor
-- Anupam Kapoor, July 2, 2004
I too have been looking for an objective J2EE vs dot-NET analysis but after reading many discussions I think an analysis might have some of the following topics.
Appropriateness to the type of problem: .NET appears to be geared to the lowest common denominator, this would be consistent with MSÂs history of going for the sweet spot in the market and not being interested in addressing Âspecial problemsÂ eg: real time, imbedded, high availability, high performance and heavily transaction oriented.
Productivity of development team: total cost of development compared to delivery of on time, on cost systems.
Maintainability of code base: ease of building and using reusable code, etc.
Dot-NET is almost certainly a MS effort to address the Java/Web ÂthreatÂ to their franchise. So itÂs not a surprise that dot-NET applicability significantly overlaps that of J2EE. If these two frameworks/platforms converge around a set of common problems, at some point the discussion may start to resemble a Âwhat color cat catches mice betterÂ sort of inquiry. But until then, it would be nice to have a more-or-less object review of which works how well under which circumstances.
-- Roger Bigger, August 8, 2004
I dont have a lot of experience in J2EE .. probably not going to learn it unless my company requires me to do so.
ASP.NET is good (not better) because of its robustness and shorter development time. I picked it up in a week without any prior knowledge.
I see the only weakness in ASP.NET is platform dependence (a personal choice would be unix/apache), however these issues are being addressed by mono and other groups.
Corps which spent a lot of time and energy in developing Java apps will most likely to stay with J2EE solutions
I think whoever is able to deliver faster products whilst being stable/secure, will dominate the market. Performance can be overcomed by upgrading hardwares. Others issues are really not that important!
Hope Microsoft becomes more open-sourced in the future and gives up IIS for apache!
-- Howard Tseng, August 18, 2004
Thanks for listing out the pros and cons of the rival technologies. Am moving over from J2EE to .NET for some period and now I feel its not really a bad decision. Cheers !!
-- Partha K, August 24, 2004
-- Chandrashekhara Halingappa, December 24, 2004
I know a lot of really proficient Java developers who are not even adept nor comfortable with J2EE. They are aware of the many 'choices' and complexities in building an enterprise J2EE application from the ground up. Still, these guys hope that one day J2EE will emerge as clear winner in this cutthroat competition between these two platforms. However, I believe a platform that is virtually free but has several conflicting implementations and differences, no matter how small nor subtle they are, can never conquer its competitors. Particularly such products supported by cash-rich companies like Microsoft. The MS .NET platform, with its upcoming versions, would gradually encroach more and more into web and mobile apps development territory. I have recently developed several mobile apps running on PDAs and microsoft smartphones using the .NET Compact Framework. With .NET, you can apply your skills and many cherished techniques in developing either web or mobile apps. I just can't wait for .NET v 2.0 when things really start to get even better.
-- Buens Buens, March 8, 2005
I stumbled on this page and I just want to add my two cents. Even in the java world nothing is for free. The true cost of Java is getting up to speed. That said the language has come a long way to make the life of a developer easier. Dot NET Framework is great way to get started but sometimes it makes things too simple. I believe sometimes it hinders ones ability to think for themselves.
In any case, Java has come a long way since the start of this thread. One has to be out of their mind to use EJBs for new projects. There's now a wonderful and extensible free IDE (Eclipse), Web Frameworks (Spring Framework and Struts), and object relational mapping tools (iBATIS and Hibernate). Personally I like the choice of picking and choosing the tool that's right for the job.
-- Mark Aden, April 11, 2005
I really liked the way you guys are talking about. What i know of Java major advantage are: it's architecture neutralilty and high security. But there are other issues which should be addressed in any application development. Cost effectiveness, high productivity, skillset required, manageability, and etc. are realistic issues. And all these, microsoft products seems to offer better. Now with a programming language C# coming into the picture and .Net framework there, and the intensive research for more innovation by microsoft, the world of .net is surely going to beat anything. One thing to be noted is that .Net was created to Conquor all and resolve all issues, no stones will be left unturned until the war is over.
-- Alex Ph, April 16, 2005
I read the entire thread. I got to know a lot from the thread. I dont rember who replied what on the entire thread. But I would also like to give some inputs.
When I started reading J2EE-EJB, what i came to know is J2EE --> designed to promote rapid application development model. But I think this is where the contradiction comes into picture. Seeing the learning curve of J2EE related stuff, i dont think that the aim of rapid application development is successfully achieved.
Second thing, to make any framework a rapid application development model, IDE (eg. Microsoft Visual Studio) plays a very important role. But I am unable to see any ideal IDE of J2EE. Now here when I say ideal IDE it means IDE should not impose any extra-ordinary requirements on hardware. Java IDEs such as net4beans fail to achieve this when compared to the IDE of DOT NET.
I have read about ColdFusion. Its a very good tool. That tool has exposed the true power that lies in the tag library of JSP. Coldfusion is a macromedia product built on the lines of JSP Tag library. It comes with a very good IDE as well. It also contains some server side components.And that IDE is also comparable to DOT NET IDE. But in terms of price Coldfusion Studio is very very expensive when compared to DOT NET studio. Cold Fusion has been used in development of some of the very important sites such as american military web site.
While reading CMP feature of EJB 2.0 specifications, I realized that its a good feature which relieves the programmer from the burden of writing that cumbersome JDBC code. When I did one project in asp.net I was unable to find the same kind of utility in asp.net. That is one of the benefits of J2EE from implementation point of view.
From performance point of view, when i installed JBOSS which does't even contain any graphical tools (as compared to IBM Websphere) the computer slowed down significantly. On the other hand when I installed Dot NET (including Visual Studio), the slow down was not that much significant.
I have read somewhere, J2EE compliant application servers are better in terms of performance than dot net applications. But for maintaining the J2EE servers we need to invest a considerable amount on hardware. I think i one spends the same amount to upgrade the system with IIS the performance would be even better.
Morever, I think that Microsoft DOT NET is also a programmer/developer-friendly solution where as the learning curve of J2EE fails to prove j2ee programmer-friendly. I think any framework should be developed by keeping in mind both high performance requirements and developer-friendliness
-- Puneet Monga, April 23, 2005
Good question and some good answers. I too have wondered why MIT would pick .NET it seems to go against what they stand for and overall makes me think MIT is selling out to Microsoft. However after reading Philip's answer I see and hope that is not so.
Let me add a little to this, I am a certified J2EE Architect and Developer for the last 7 years (C/C++ UNIX before that) for Lockheed-Martin. In the last 2 years I have had to work with .NET as well so I have a good understanding of both.
A common miss-conception of J2EE is that you have to write complex applications using all the patterns and all the tools, in order to make it J2EE. This is NOT TRUE. Over the years I have collected some best practices and patterns of my own, I never use CMP/BMP unless a customer would possibly need to change Databases down the road OR I need to develop a small application with database access...quickly.
Compared to .NET, I believe J2EE is faster to get an application up and running with a full Database structure because of CMP...with J2EE you just model the EJB and it can top-bottom design of your database! This is very fast development...
Now when I am writing complex apps I use a set of patterns like JSP->Servlet->Session Facade->Data Access Object-> PL-SQL. This is very much the same pattern in .NET and is just as fast to develop.
NOW .NET did have the advantage of coming out after J2EE, so it does have some nice features especially for presentation logic and data caching. But honestly with open source tools like Apache-Struts and Java Server Faces that gap is being closed.
In the end I think you can ramp up a little quicker in ASP.NET and VB.NET...because you have the ability to write ugly mixed logic code still i.e. (Business Logic and Queries in the presentation logic). However, if you want an Enterprise level application the design and develop times are about even...I have lead many efforts of the same size on both platforms...I know this for a fact.
It is also a misconception that J2EE takes more resources, if it does, then you don't have good UNIX admins and have not performed proper container testing. I have tuned JBoss, JRun and WebSphere on single UNIX Sun Box's in a shared environment to get 1000's of hits per second. With proper threading, DB pooling and timeouts you can get great performance.
In conclusion, there are many miss-conceptions about J2EE made up by the .NET community because they want to think it is easier to develop and deploy .NET apps, I'd say if you use the proper tools in J2EE (WebSphere all the way) you can do exactly what .NET tools can and you can deploy it on UNIX, Windows, MacOSX have many vendors with competitive pricing.
Ps. I love it when someone talks about .NET performing better than J2EE...then I show them a picture of our server room compared to theirs and they have 20+ blade servers running windows that my one Sun box can do. UNIX > Windows...J2EE => .NET Still!
-- Rock Whitney, June 23, 2005
That's always an enjoyment to see a long thread with so many inputs. And specially its even better seeing so many contributing to one of the largest debate/discussion of Software Industry.That was a good experience to read the reviews from great engineers and architects.
Java as a whole(including J2EE) promotes portability. There's no surprise about it.J2EE is a set of specifications. These specifications are very beneficial in establishing a common platform among a set of vendors. A significant part of these specifications are vendor dependent. This gives an opportunity to vendors for proving their potential in terms of the utitlity, features that these vendors can offer. In my opinion, this opportunity oozes to make porting of applicaton difficult. Again this leads to contradiction to the fact that java promotes portability. In my opinion, if you give room to vendors, the ultimate goal of "PORTABILITY" is compromised. But if we see to it from the other side, this leads to good number of choices in the market and removing the monopoly resulting into competitive pricing.
Second thing I would like to mention is that "Issue of Deployment" comes into picture only when there are so many different vendors. Deployment on different j2ee compliant servers differs considerably. That is from where the term "deployment" is coined. Different vendors offering different servers have made "Deployment" a big issue. Where as If you consider Dot Net applications, "Deployment" term is very big for dot net applications running on a single platform provided by only one vendor (Microsoft).
Its true that one can still write ugly-mixed code in ASP.NET and VB.NET. But this doesn't mean that with j2ee its not possible. If one uses JSP(Component of J2EE Architecture) and Beans to develop a web application, there's a big room for the programmer/developer to write a "mixed" code. What I believe is no matter how strict the architecture is, a programmer cannot be stopped from mixing the code . Because if you dont allow it, even small applications with database access will eat up lot of time in development. It is upto programmer's discretion to insult a big architecture by mixing the code.
Any applicaton development consits of two parts:One is GUI development and second is Business logic. If any one wants to speed up the application development process, enhancement in either of the parts can significantly reduce the development time. I think that Microsoft is emphasizing more on GUI Development by providing an IDE. MS is also concentrating on "Business Logic" part by providing various features such as connection pooling, dis-connected resultsets, data caching Where as J2EE servers are more concentrating on Business Logic Part.
Moreover, some good projects such as Apache Struts are strictly enforcing the model-view-architecture. I agree these tools are trying to reduce the gap between dot net features and J2EE features. But I dont have any idea of what that gap would be if Microsoft tries to increase it.
I am not an opposer of J2EE. I am working on it from last 6 months and I like to work on it. I am working in one of the biggest telecom organization of India with over 10-million subscribers.The entire billing of the organization depends of TIBCO backbone that using JMS to integrate different components involved in billing. Majority of TIBCO is developed in Java. And the requirements or resources that the TIBCO demands is very high.I dont remember the exact figure but it requires more than 27 servers up running on solaris. I think this is a huge requirement. But no doubt about the scalablity offered.It is very high as compared to windows machines. There are no two ways about it. And I think that single sun box will not suffice for a really huge organization.
Anyways, in my opinion, discussion will be an endless one. My experience in IT industry is too short to conlcude on such a discussion on which some great experienced minds have contributed.I would not like to make any dictative conclusion to this discussion. Infact I would like to read more inputs and opinions that will ultimately increase the knowledge base of everyone contributing to this discussion.
-- Puneet Monga, June 24, 2005
Both the J2EE specifications and Microsoft .Net are similar in that both can accelerate and simplify business application development. Microsoft .Net is a platform comprising servers, clients, and services. It consists of a set of applications such as Visual Studio .Net, the Tablet PC, and the .Net My Services. Microsoft .Net was designed to address current and future customer needs about how applications will be built, deployed, and operated. The shift in how customers are building and deploying software -- particularly the shift from building proprietary software to buying software and customizing and integrating it -- is a Microsoft .Net foundation principle. Microsoft .Net was built for integration through XML Web services using protocols and file formats such as SOAP (Simple Object Access Protocol), WSDL (Web Services Description Language), and UDDI (Universal Description, Discovery, and Integration).
By contrast, the J2EE specifications are just that -- specifications. They define a small portion of a complete platform focused on server-side application development. These specifications, such as the JSP and EJB specifications, clone the Microsoft Windows 2000 operating system. For example, JSP is a direct clone of Microsoft's Active Server Pages, and EJB is a clone of some of Windows' COM+ features. J2EE is largely a set of specifications designed to make building server-side applications on Unix systems easier.
-- Anil Kumar, June 24, 2005
J2EE is a set a specifications so that you can have competition amongst vendors and portability amongst vendors...that is why it is not a set of tools like .NET...I like the ability to choose vendors and I think it is very important and would be for MIT as well.
About the "cloning" in the above post; I would argue and many would agree that the .NET model is almost identical to that of J2EE. It uses the same basic patterns: Facade, DataAccessLayer, Virtual Machine "SandBox"...oh and not to mention C# the language looks very close to JAVA doesn't it? This is why it doesn't make sense at MIT for me unless they are using VB...which I would say urghh to.
Before .NET, MS was doing ASP pages and DCOM/COM .dlls running in a thread in the OS not a container like J2EE does. Many of MS ideas came from Sun's J2EE Specs. That was their advantage and why wouldn't they use them...
I still argue that if you give a compentent architect/engineer team in both J2EE and .NET a set of requirements you will get the product in close to the same lifecycle and along the same costs. However, with J2EE you will have the ability to be portable across many vendors and operating systems and with .NET you will have desktop integration with windows...those are the major differences I see in the end products.
These are the rules we have at my job:
1) Use .NET when - the project needs desktop integration with Windows and is a small scale application.
2) Use J2EE when - the application needs to run on a large UNIX machine or shared environments, when Database vendors, operating systems may change...hence a shared environment.
-- Rock Whitney, June 24, 2005
I think design patterns are closer to Object Oriented Programming than Java. So if one says that a design pattern that can be implemented in J2EE should not be used in dot net or any other object oriented language then I dont agree to it at all. If one says that design patterns are related to Java, then I wonder that the person will also say(claim) that middleware,application server,business logic tier are also related to J2EE/Java. No one will believe it , Right!! Three tier architecture existed even before Java came into picture.For example Data Access Layer is just a term given to the middle layer introduced in three tier methodology in its early days of inception. It is upto the organization to develop its own middleware/middle layer or purchase an existing one and configure it. to summarize, design patterns (expert ideas) are no one's patent.
Regarding the life-cyle, I would like to "RE-WRITe" one point that product development also includes GUI Developement which also consumes significant time. In my opinion, this is the area in which J2EE is far behind as compared to any IDE developed by Microsoft. Developement time consumed in any Java technology for developing the front end is very very high as compared to the any IDE of microsoft. That makes the development life cycle of j2ee considerably high if compared to dot net.
I recall that it was written in one of the previous responses that small database applications are developed using CMP feature so that application can be completed as quickly as possible. I have a doubt that "Does that small application was supposed to deployed on a Large Unix Machine (As mentioned in the last resposne)?". In my opinion it a utter waste of resources in terms of hardware and software architecture. Using J2EE for a small database driven application is not what the architecture meant for. You can find a lot many big web sites developed using microsoft technologies offering good amount of scalability as well. So I object that dot net should be used only for small applications.
I completely agree that c sharp is clone of Java. There are no two ways about it. But I think question here is not who cloned what ? Question is who will emerge as better in terms of the product and services it offers. I think that there's no doubt about it that both the product are giving a tough competition to each other. Both are capable enough to co-exist because the giants associated with each of the product have proved their capabilites.
-- Puneet Monga, June 25, 2005
Response to Puneet's -- "Its not a question of who cloned whom." Of course it is. Had Java been a MS product and Sun developed (cloned == copied == stole) C#, there would have been lawsuits. I cannot predict which will come out on top as Java is the superior platform, language, runtime etc. etc. but MS has money and hordes to users who wouldn't notice the difference if you replaced their PC's with type wrtiers.
-- Harsh C, August 2, 2005
I think its the perfect time to mention the title of the thread "Why choose ASP.NET vs. J2EE?". So in my opinion rather than discussing on who cloned what, who will sue whom it's better to contribute that what each one of us has experienced with both the architectures.
Second thing I would like to mention is "If one decides which architecture to use on the basis of who cloned what" then one should use the telephone invented by Mr. Alexander Graham Bell rather than using the telephone manufactured by a good company with better features and utilities.
-- Puneet Monga, August 3, 2005
I am only a fresher in this field and am not fit to argue with the highly experienced gentlemen of this thread.
But as a developer and even before as a student the J2EE architecture or even the language Java has not been able to attract me.
I am not aware of performance issues but what I know that in my company we are using DOT.NET for developing this executive information system for a teradata system not because we donot have JAVA professionals. Mine is a company involved in development projects in both JAVA as well as DOT.NET. But I see very few fresh project here being developed in JAVA. JAVA is mostly being used for maintainance and enhancement of legacy systems which our company/ or some other company once created.
Also my mates working in other companies find most of the fresh development work on .NET
I do have buddies working on fresh JAVA development projects but these are normally in companies which specialize in JAVA and donot venture into other technologies.
I cannot acceot that all this is because of shear ignorance
I tries to search the net for performance statistics of already implemented systems but invain.
I would be rejoiced is someone could suggest a few sites which could give such statistics as it would help me in talking a better stand on the issue
-- K S Chanchal, September 27, 2005
Wow, a lot of good (and bad) points made in this thread. Looks like the "zealots" came out "hard" on this one....those who are hard-core Micro junkies and those who are JAVA junkies and "hate" B. Gates :). In any case, let me get to my point. JAVA (J2EE) vs. .NET? The answer, the one that fits your companies needs (from business, to money, etc). There are more "advantages" to using the J2EE platform over .NET (such as portability); however, you are not gaining "too" much using one over the other. If your company needs something that is relatively "cheap", .NET is your answer. If your company can spend "tons" of money on training, development, etc, then J2EE is the answer. As for "performance" between the two, that relies on a several factors; two of which are coding and the server/server "up-time". I have developed apps (eCommerce) in both .NET and J2EE. I, from experience, would have to say .NET is easier to develop, test and implement over the J2EE platform. But, when I want to "move" an entire solution from one platform to another, JAVA IS IT baby!!!! I'm definitely NOT going into a full thread of "which technology is better" because both have their advantages and disadvantages. It is up to your business, the "businesses" developer's experience/learning curve, your current technology infrastructure, and the amount of money you want to "throw" at developing one of these solutions should dictate what path you need to take. As for why MIT went to .NET over J2EE, why not?
-- Steven Jacobs, October 3, 2005
I'm working at the Bank One /JPMC environemnt and most of the IT groups are using MS products (MS Access, Crystal Reports) They want to go with in ASP.Net because it's more friendly to use and take less time to do it. I have completed the web site for my senior projects last year and our group used HTML/ASP.Net in order to create the web page for one of the companies in columbus. I would recommend to go with ASP.
-- Irina Strickler, October 28, 2005
the "my company uses .NET so .NET is better than J2EE" logic really piss me off. It doesn't hold water. What we, the truth seekers, need is a concrete truth for a specific situation. What we need are facts.
I read the whole thread because I'm also interested of the facts but based from the answers above, despite of the large numbers of pro-.NET replies, Java Guys provided answers that can convince me to go with them. If a company decided to use the one rather than the other, it means that this decision will give such company more profit and income considering the many many many factors. It doesn't mean that A is better than B in every situation. But performance wise, it seem to me that JAVA defenders give facts rather than words-of-love-and-hatred and wrong notions; but they are just less vocal.
But as the other poster said, use the one that your customer/company requires (but it doesn't mean it's the better one).
(ehem. excuse my english)
-- renato patsy, November 6, 2005
One has rightly said that "Its easier to criticise than to construct/participate".
I am interested in presenting one FACT:
MASTEK - A software company developed one of the largest dot net projects in the world. The project is named as "London Congestion Charging" . This project could have been developed in J2EE also.
I have pasted the link below if any one wishes to go through the case study
After reading the case study one can judge that performance requirements for this application would be considerably high. And I think the dot net is meeting those expectations.
Was the company so dumb and dull that it didn't even bother to evaluate and compare the advantages and disadvantages of Dot NET and J2EE?
I dont think so. I think any software company will first evaluate the advantages and disadvantages of all the possible technologies as per the requirements. And then the company will think which technology suits best to a particular project.
Almost all the big companies possess the required competence and manpower in both the technologies. So expenditure/investment is no more a problem for big companies. Such factors are no more the dominating ones. This era is related to Brand Image which will defintely not come for free.So if any company makes a sincere decision to go with either of them for a particular project, it depends on how well the requirements of a particular project can be met by either of the technology? That's why A is not better than B in every situation. But vice-versa is also true. "SITUATION" is the keyword here. I would like to mention that situation consists of many factors and not only performance. And in that case I totally agree with the points that Steven Jacobs presented.
So when one says that "my company uses this technology" it doesn't surprise me at all. One should look at the reasons why that company opted for either of them? There can be some good points which none of us has thought yet.
-- Puneet Monga, November 7, 2005
I am new to java struts. I have been developing application using java struts for one year now, so I am not as experience as you guys. I think both of java and .NET are the dominate for web application development. I always hear that java advantage is that it can run in multiple platforms, but really how many companies often change their platform? I know a lot of developer do not like Microsoft that much, but you know what Microsoft made it easy for developer to develop applications fast.
-- sulaiman jrar, November 18, 2005
From most of the response to this thread, I personnaly see what matters most is how an architecture / sets of tools (J2EE / .NET) serves to deliver a required solution within a set of constraints depending on the situation. This may include physical location, culture of a country, the percentage of acceptance of the architecture / tools / software development methodology used in that locality. What counts most in business is profitability. For a software solution developer, it will most likely be wise choice to choose J2EE when a customer requires portability in a mixed architecture enviroment. However, when portability is no issue in a locality where adoption of Micosoft technologies is widespread, then .Net is the way to go.
Essentially, software development, in a business world where resource is not without charge, means using the best tool to accomplish the goal in time and with the best use of resources. I believe putting more effort in analysing and determining what is best for a required solution in the constrained enviroment is a a key success indicator.
As for MIT choosing .NET, its a matter of what deals they may have with Microsoft. MIT is after all doing a type of business. We understand the nice stuff about open source. However, open source are also maturing in a way where technical support becomes chargable, if a tested framwork or platform gets supported by a commercial company. Eg. mySQL, Red-Hat, Suse linux (IBM). All in all, I must say nothing is without charge. For many coporate organisation, they have opt for Microsoft Technologies due to the fact that they perceived or believe microsoft will provide better support because Windows is widely support globally. (Open source future is yet to be seen ) For a business point of view, what is widely used and accepted and will offer the most ease of use and simplity will capture much attention. Coporate marketing is also a factor to how and why a certain platform is adopted.
Well, its really a matter of where you are (location), what business you are involved, waht coporate culture you have that may have a substantial impact a decision made on the selection of a software technology.
-- CH N, November 27, 2005
I have used both dotNet and J2EE in projects. I have found the following to be true:
- - The features of dotNet are available within J2EE but require that just as you purchase Visual Studio you have to purchase a J2EE IDE. This gives you the same productivity as dotNet (all the same features).
- - Setting up of the application server (IIS) is just as difficult on dotNet as setting up a J2EE app server. Like with everything if you know how to do something it is easy.
- - The main cost of J2EE and dotNet projects tends to be down to people learning on the job (this covers architects, right down to testers).
- - One of the main benefits of dotNet over J2EE is the cost of developers, architects, etc. and also the more prescriptive approach that MS endorses to using patterns, etc. These have been proven by J2EE projects before the emergence of dotNet.
- - The best projects use the best parts of dotNet mixed with the best parts of J2EE (this is where Web Services come in).
-- Mike Cogan, November 29, 2005
I am always amazed that people are still defending why stick with J2EE. Back in 2002, YES .net probably made sense. But these days, Java is amazing! Java 1.5 picked up ALL the shortcomings that .net had over it. JSF removed all the shortcomings asp.net had over it. And then of course, in Java you have Spring and Hibernate/EJB3. All that talk .net had that it was faster because it had fewer lines of code... well so does Java now. So that point is gone. finished. As far as IDE's go: Eclipse is just simply amazing-- and it just keeps improving. Oh, and Oracle's JDeveloper is now free. And Sun's Java Studio Creator is free.
There is also tools for getting started quickly-- I mean really quickly. Check out Java's AppFuse.
Also, with .net you have vendor lock in. Only one vendor. One vendor. One vendor. I am surprised that does affect people's decisions more. One vendor. Microsoft is competing against all the other technology players: IBM, Oracle, Sun, BEA, Tibco, Google, Novell, Redhat, Mozilla. Can Microsoft hold on forever? On the redeeming side, Mono does provide an alternative version for Microsoft's .net. One other highly interesting point is the new found friendship betwen Microsoft and Sun-- and that Microsoft had a booth and talk at JavaOne 2005.
And maybe one of the best things about J2EE is it's community. While .net has picked up a pretty nice one for itself, a lot of what it does still piggy back's off of Java-- and is a step behind-- becuase it just ports the work Java does. Examples of this are nUnit, nHibernate, Spring.net. Their versions are always a step or two behind.
Before .net there was only Java. Then .net came along and improved on the Java concepts, and it was better. Then Java fixed it's shortcomings and improved on them, and now it is better. It is doubtful that Microsoft will ever be able to catch up at this point. That is unless Microsoft's A-team marketing succeeds. But hopefully technology won't be chosen simply because of marketing.
-- M S, January 7, 2006
Its good to read ".NET probably made sense in 2002". But now it doesn't make any sense because java has improved upon a lot on its shortcomings in Java 1.5. While mentioning this it's not easy for me to gulp such a big assumption i.e. Only Java can improve upon its shortcoming where as .NET cannot. Let us come to the point. If Java improved upon its shortcomings, it means that .NET was way ahead of it. Second thing, if Java can improve, why not DOT NET.
If we talk about competition between Microsoft and various other giants such as IBM, Oracle,Sun,BEA,Tibco etc., I would like to mention the internal competition between these organzations is also considerably tough. Its not like these organizations are together competing with Microsoft. All these organizations (including Microsoft) are competing with one another. As .net provides vendor lockin. Only one vendor. One vendor. One vendor. Then how come Microsoft, being the whole and sole vendor of .net, faces comptetion from other giants. Are these giants also vending .net? I didn't know that.
Its true that J2EE community is quite big if compared to .net community. I also agree that nUnit,nHibernate and Spring.net are also copied/cloned. But it doesn't mean that J2EE communites are not involved in developing various components of .net. One of such components that J2EE community copied/cloned is DataSet. That component was presented even at the recent Sun's developers Conference in Mumbai. It is one of such N components that J2EE community has cloned/copied. Once can visit java.net for such components.
Java banks on portability. I still wonder whether it is successfully achieved in J2EE. Recently I wrote one program that handles an exception and on the basis of that, some processing is done. Program was running fine on one server.But when I got it deployed on another server, exception thrown was a different one. Now, where the portability went, nobody knows. For ensuring portability, one cannot rely on developer to know the discrepancies of each and every vendor before starting the development.
As far as the improvement is concerned, there is always a room for improvment. No matter its J2EE or .NET.
-- Puneet Monga, January 13, 2006
the discussion of which platform stands better over another is arguable. every platform has its shortcomings. the question is which platform provides better maintainence lifecycle, features, ease of use, deployment and upgrade options. the thing about being tied to only one vendor is in fact goood because, there is only one commander-in-chief, so it gives better direction to the platform. as with the latest release of .net, it primarily focused on developer productivity. Java has its set backs in terms of learning curve, java ides are ugly mess, compare jbuilder and VS 2005, and java ides are inconsistent. each ide presents its own environment and it takes time to get used to. there is always talk about MS's closedness in its platform; but its entirely incorrect. .net apps can be used with Orcale,MySQL backends needless to say IIS offers an open factor design to host jsp pages. the concept of providers in .net enables developers to construct features such as SQL Server Dependency Caching into Orcale. So MS is not completely shutting down other vendors. for MS integration is the key word, integrate all its product into one super duper product--MS Sql Server, Office, windows and .net and Sun is also doing the same. there is a bit of conspiracy going on actually.
1. the introduction of Java by Sun was just to gain competitve edge over MS, in fact the portability design of java was to lure UNIX/LINUX and windows enthusiasts to develop using Java and in the end deploy their apps int 'highly scalable' Solaris workstations/servers.
2. MS being MS its only agenda-'Promote Windows as the superior platform in all environments:desktop, server, handhelds, mobiles'. complete global domaination.
3. Oracle the fat (rich) guy taking sides. it could not do it with MS because MS is a competing database vendor with deep roots in small to medium market; so the natural opt is its alliance with Sun turning Oracle as data heaven for Java devlopers.
4. IBM- old time revenge on MS. MS screwed IBM over OS/2. so IBM like the old man has a grudge with everyone including Sun and has come with its own java solutions trying to dominate even Sun.
5. Apple- inncoent bystander who just squats over small successes like the iPod does not want to do anything with ongoing hoopla. PS:- the talk about java being more secure than .net is bull, over the years developers have ignored MS's security strategies and quick response. a lot of my freinds who prefered Java over .net are starting to learn Java
-- Sandeep Pradhananga, January 21, 2006
In response to Sanseep, hereby referred to as "Cadet" of the "Commander-in-chief". Here's a point-by-point discussion.
1. "the thing about being tied to only one vendor is in fact goood because, there is only one commander-in-chief, so..."
Vendor lock-in gives better direction to a product. Come on now seriously. Have you ever used anything except windows. Vendor lock-in gives direction allright, but its anything than better. It just creates a monopoly and shoddy products. Case in point, IE. After beating down Netscape with its criminal practices, all MS offered in the way of a web browser to Windows retards was a shabby, 3rd class browser. Now when Firefox and Opera have kicked IE where it hurts, MS's answer for its new browser version is -- "tabbed interface". This is exactly for people like you Sandeep, so you can take the torch and run with it, in the process, leading people to believe that IE is in fact equal to, if not better than the free alternatives.
I apologize if this sounds like a rant but lately I have been seeing a rash of people who have started to get involved in posts, on both sides, Java and .Net, not out of any knowledge or experience, but just because of the fact that the school or company they work at uses one or the other. But, moving on...
2. "it gives better direction to the platform. as with the latest release of .net, it primarily focused on developer productivity. "
If you read my earlier posts, developer productivity is not enough. I have referred to what you call developer productivity as "left click-right click-done" syndrome. I have used VS, its great, its amazing. It does have its quirks e.g. what's up with IntelliSense. It just falls apart sometimes. But overall, its great. But, what does that have to do with the .Net platform. You are saying a platform is better than the others because it has a better IDE. I don't think so. But good looks with minimum discomfort is a major reason people are hooked onto windows. You really must take a look at the new Linux distros. But I digress. Sometimes, all the great IDE tools lead to shabby platform generated code. Case in point, Weblogic's IDE. Its great. I think its better and faster than VS, but that's just me. Anyways, WL's ide has a lot of built-in tools like custom controls, page flows etc. using which, the Java community too can achieve "higher developer productivity". But I have never seen anyone actually use that. Reason being, if I don't want to use WebLogic tomorrow, for whatever reason, the company went under, a new company came along, whatever, I am not tied in to the "crappy" WL generated code for my servlets etc.
3. " java ides are ugly mess, compare jbuilder and VS 2005, and java ides are inconsistent. each ide presents its own environment and it takes time to get used to."
I personally thik there's nothing wrong with JBuilder, or IntelliJIdea or Eclipse. But what you call inconsistent, I call choice. My company uses JIdea. But I use Eclipse. Reason being, its free and open source. Tons of great plugins etc. If I am laid off tomorrow and goto work at another company with a different set of IDE's, I still have a choice of whether I want to learn the new environment or stick to Eclipse. Your point makes it sound like, we should have just one brand and model of cars, TV's, computers, microwaves, TV emotes, so that everything is "consistent". I think more than a dislike for inconsistency, its a fear of choice and change.
4. "there is always talk about MS's closedness in its platform; but its entirely incorrect. .net apps can be used with Orcale,MySQL backends needless to say IIS offers an open factor"
MS's closed-ness of platforms-is entirely true. You can use .net or Java or for that matter anything. You just have to make calls to native code, be it through drivers or some API. Interoperability is not openness. Interoperability is in MS's favor. So they can hook more people. Openness is something entirely different. Openness means agreeing upon, and sticking to standards. Not creating your own. Case in point, the reaction of MS on hearing one of the US states going for Open Office's XML standards model for its office solutions, as opposed to MS Office.
5. "MS integration is the key word, integrate all its product into one super duper product--MS Sql Server, Office, windows and .net and Sun is also doing the same."
Super duper, eh! Windows is far from super duper. MS SQL Server is a shame as far as enterprise wide DB's go. MS Office is a great product. But come on, 2 GB's for an offic suite. Sun is not doing the same. Case in point, the Apache projects, various java.net projects and toms of other things. Repeat after me -- SUN is not integrating anything.
6. "there is a bit of conspiracy going on actually."
7. "1. the introduction of Java by Sun was just to gain competitve edge over MS, in fact the portability design of java was to lure UNIX/LINUX and windows "
8. "2. MS being MS its only agenda-'Promote Windows as the superior platform in all environments:desktop, server, handhelds, mobiles'. complete global domaination. " Complete global domination. Now when was the last time I heard time. Aah yes, I believe Hitler said something to that effect.
9. "3. Oracle the fat (rich) guy taking sides. it could not do it with MS because MS is a competing database vendor with deep roots in small to medium market; so the natural..."
I too have always seen MS as the underdog, no seriously. But since MS is obviously the "Globally dominating" platform, I don't believe there's anything to fear.
10. 4. IBM- old time revenge on MS. MS screwed IBM over OS/2. so IBM like the old man has a grudge with everyone including Sun and has come with its own java solutions trying to dominate even Sun."
Aah, the conspiracy grows deeper. Revenge indeed. Never saw that one on a company's mission statement.
11. "5. Apple- inncoent bystander who just squats over small successes like the iPod does not want to do anything with ongoing hoopla."
I will let the Apple crowd handle this. I am not too much into Apple myself.
12. "PS:- the talk about java being more secure than .net is bull, over the years developers have ignored MS's security strategies and quick response.
a lot of my freinds who prefered Java over .net are starting to learn Java"
P.S.: You are wrong. Java is more secure than .Net. If you could make the rest of the sentence more coherent, I could reply in detail.
A question of my own: Why is none of MS's own products built in .Net?
I apologize for the rant, but I couldn't help it.
-- Harsh C, January 21, 2006
no offences taken harsh, long before MS even before IBM still the saying goes, 'if u don't like it then don't use it'. as far as browsers are concerned Netscape was selling an app such as browser that is outrageous. internet is a global media and i think no one has to pay to access it. frankly ms changed the dynamics so we do have cool browesrs like opera and firefox, dont we. show me how java is more secure than .net and what about performance, rad, productivity......................?
-- Sandeep Pradhananga, January 22, 2006
ps:- i have used other oses starting from mac os 7, linux, unix also.
-- Sandeep Pradhananga, January 22, 2006
I don't know if it is as simple as just 'if u don't like it then don't use it'. If a company has a monopoly, you may have no choice-- and that's true whether we are talking about software, railroads, or telephone service.
-- M S, January 22, 2006
I agree with M.S's point about Sandeep's 'if u don't like it then don't use it'; in a monopoly, it is a problem. This also moves the forum topic in a direction that's out of its scope. But specifically, as Sandeep said
"Netscape was selling an app such as browser that is outrageous. internet is a global media and i think no one has to pay to access it."
I agree. I agree that Navigator should have been free(how Netscape makes money be dammed...), but I also believe that so should all OS'es, software etc. But coming to your point, for example, you can't run a browser outside an OS. So, should MS Windows also be free in the name of access to information.
"frankly ms changed the dynamics so we do have cool browesrs like opera and firefox, dont we."
MS changed the dynamics. So did the East India Company for small business owners and artisans in India pre-independence. So, did the Spanish conquistadors in the Americas. Long Island was bought by the colonizers for a few beads and other items. The Indians thought that they were valuable, they gave up the whole of Long Island for that. My analogy is far fetched, but that's the way I think about these matters. As far as I am concerned, people, like the American Indians, are taking beads for an OS and related software for lack of choice. MS did change the dynamics, but in its favor.
Opera has existed for a long time. You cannot attribute every product that came along post MS to MS. In a way though, you could. Because I believe it was the shabbiness of MS products that attributed to their rise. I have been using Opera since 1997 or something like that. I knew there was a better alternative and I used it. MS suppresses this choice or even the existence of this choice. How many PC manufacturers ship with non-MS OS'es. Free AOL CD's. There are probably millions of them, all with IE on it. I don't believe my mom knows the difference between IE and Firefox, or probably even cares. But people who know better should.
Coming to the forum specific topic.
"show me how java is more secure than .net and what about performance, rad, productivity......................? "
1. There are a lot of studies out there, all in favour of one over the other. But lately, this space has been inundated with studies by MS, carried out by pro-MS or paid-by-MS. The grounds are never fair by either company. There's a lot of smoke and mirrors. But, if you go back to basics, there's quite a lot of information out there. One such study is available at: http://184.108.40.206/search?q=cache:Nom7P5wDQT0J:www.cgisecurity.com/lib/J2EEandDotNetsecurityByGerMulcahy.pdf+%22j2ee+vs+.net+security%22&hl=en&client=firefox-a
Basically, in regards to .net, I believe it is much less secure as the environment is not sandboxed as in Java. .Net, I believe, uses a lot of native calls which is the root of the problem. Java is more sandboxed which provides a better security model. Mind you, native calls can be made in Java using JNI. However, you would have to really work hard just to be able to enable your app to be exploited. In MS, its quite easy. I quote from the study:
"While J2EE uses the concept of Organisational Roles to delineate responsibilities at various stages of the development and deployment process, .Net does not define the hierarchy as clearly. While .Net provides a solid security model through managed code in the CLR, the ability to run unmanaged code confers the ability to bypass CLR security through direct calls to the underlying OS APIs. In the Java world, signed, trusted code has unrestricted access to system resources. Java calling out to native (C/C++) code through JNI confers the ability to bypass the JRE�s security as surely as running unmanaged code in the CLR can be used to bypass.Net�s security. "
And that is my point, .Net offers a lot more opportunities for security "mess-ups".
Furthermore: "The reliance on Microsoft-specific identification stores such as Passport or Windows domains for authentication and authorisation purposes means that .Net applications may require end-users to subscribe to Microsoft�s Passport service. As an example of why this might be a �bad thing�, Microsoft had to temporarily shut down part of its Passport service during November 2001 due to a security issue. Current copyright restrictions prevent non-Microsoft vendors from providing alternatives, forcing .NET application developers to rely upon a single vendor for back-end services. Concern at this stance in the wider developer and Internet communities has resulted in projects like DotGNU and Project Liberty. DotGNU is an FSF (Free Software Foundation) initiative to provide an open-source implementation of the .Net framework, and a non-vendor controlled Passport alternative (Virtual Identities), which is intended to use encryption wherever possible to protect user details. Project Liberty is an alliance whose members include Sun, AOL, Vodafone, American Express, HP and RSA, to name but a few, with the stated aim of creating a federated single-sign-on scheme allowing authentication and authorisation from any type of network connected device. "
This leads to my previous post about "openness", as being collaboration instead of just interoperability.
But to be fair, this study is a few years old. A lot has changed since. But the crux of the matter is not only which is better for developers. Its just software. We can build anything we want. Improvements can be made etc. But the issue is about philosophy, who controls what, if anything at all.
2. "Performance": As I said, there are a lot of studies out there. .Net DID have a better performance profile. However, lately, I don't believe that's true at all. Faster application compilation, faster deployment etc. are not performance metrics at all when it comes to enterprise apps. These apps make calls to legacy systems, cross platform or VM remote calls etc. The bottleneck I believe is the network at this point, not a VM.
3. "RAD": I don't really see how "RAD" is related to .Net or is a .Net specific thing, or how two app platforms can be eveluated on the basis of a development methodology.
4. "Productivity": As I said before, you have to define productivity. Is it the left click-right click-done thing. Or is it driven by being able to make choices and working in the environment that suits one best. If I type day in and day out on a typewriter, I am pretty sure I can crank out more than 80 words per minute (or whatever the holy grail of typing is), i.e. be higly productive, but does that make me a good author. To me, productivity is important, but not more than the thought process, code quality etc.
-- Harsh C, January 22, 2006
the security issues referring to java and .net comparison does not reflect real life exploitation issues. show me how to exploit this vulenrability in .net with a real example. in theory all systems are vulerable. and about the passport thing MS as accepted its limitation and by the way .net does not tie one to using Passport framework its purely optional.
-- Sandeep Pradhananga, February 2, 2006
That was ONE example of a COMMON, EXPLOITED .Net vulnerability.
I don't know enough of .Net to develop exploits about it. But anyone can do a google search on .Net vulnerabilities and find any number of exploits. If it satisfies you, here are some:
http://www.greghughes.net/rant/ZeroDaySecurityExploitInInternetExplorerBeAware.aspx http://issj.sys-con.com/read/167106.htm http://www.tbtf.com/resource/ms-sec-exploits.html http://www.microsoft.com/technet/security/bulletin/ms05-004.mspx http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx
This is just something I found in like 10 minutes. But, the "problem" I mentioned is not the issue. The issue is that there are a lot of vulnerabilities in .Net, just like that.
Here's a few links. They are not specific .Net exploits. They are articles about the direction MS is taking security in. A lot more interesting reading for non-.Net people like me.
http://www.theregister.co.uk/2001/11/14/ms_security_framework_is_another/ http://www.theregister.co.uk/2001/11/09/ms_throttles_research_to_conceal/ http://www.theregister.co.uk/2001/11/05/ms_passport_cracked_with_hotmail/ http://www.theregister.co.uk/2001/11/02/ms_to_force_itsecurity_censorship/
In summary, all the above articles show how MS is trying to censor public information about security vulnerabilities.
Also, the thing to remember is, as I said before, .Net is not a sandboxed environment. It is tied in intimately to the underlying OS. I think any MS Windows vulnerability is also a vulnerability for .Net applications.
"and about the passport thing MS as accepted its limitation" ----What does that mean? Any arguements, conclusions to your observation about MS. Or is it just your opinion? Please be more specific and provide links when you can.
"and by the way .net does not tie one to using Passport framework its purely optional."
My, that's wonderful.
Please don't mind my saying so, but your post is entirely rhetorical. It does not provide one sentence in clarification about any issues being discussed on this board, no references etc.
Its not limited to just this board, any discussion about this subject goes like this:
- Java IDE's suck. - Java sucks. - J2EE is too heavy. - Therefore, .Net rocks.
Well while we are asking rhetorical questions, here is one I always ask in any discussion like this. Its never answered, but maybe you have an opinion.
- Why is NO, I repeat NONE, of MS products built with .Net?
-- Harsh C, February 2, 2006
here is one for you: i found it in one search attempt http://news.com.com/Sun+plugs+serious+holes+in+Java/2100-1002_3-5975496.html http://news.com.com/Java+flaw+could+lead+to+Windows,+Linux+attacks/2100-1002_3-5464872.html http://news.zdnet.co.uk/internet/security/0,39020375,39203733,00.htm http://news.zdnet.com/2100-1009_22-5746913.html
reported by CNET. java is more vulerable in comparison to .net because Java is implemented on a variety of platforms and some internal implementations are vendor specific so takes longer patch cycle. on the other hand .net runs only on Windows so its easier to patch. sun recently issued security patch for jre and any security patch specific for .net 2.0 is yet come.
-- Sandeep Pradhananga, February 3, 2006
and about MS not building any products with .net what's that try running SQL server 2005 without .net 2.0
-- Sandeep Pradhananga, February 3, 2006
and my friend is a little out of recent developments. .net framework is tightly integrated w/ the next version of windows with major subsystems -Presentation, Communication, workflow etc. .net api is likely to replace the Win32 API for most of development using windows.
-- Sandeep Pradhananga, February 3, 2006
I am sorry to say this but what you wrote is first of all, false and misleading; second of all, it does not make sense. Some other peeves, no punctuation, the grammar is shoddy, some sentences do not even make sense. I am sorry if its just me, but some posts here do make for a hard read. And any posts more than 10 words would certainly be appreciated, especially if they are true and contribute to the discussion in some way, and are not just a shaky attempt to post a couple of lines denying whatever someone has to say, with no references, or discussion or even something intelligible to say. Case in point, you say, �and about MS not building any products with .net what's that try running SQL server 2005 without .net 2.0.� Please try and make a lucid point. Your statement is just a really bad shout out which addresses no particular issue. Why do you have to send in 3 posts averaging about 10 words each? If my word count is off, please don�t email me about it. All you can come up with is 4 articles about ONE bug. Furthermore, all the articles said that the security hole has been fixed. So, I don't understand why it is an issue. Or your aim was to just write something that would make some noise or an attempt to get a last word in? All the XXXXXXXXXXXXXXXXX Had to be used to demarcate links. Pretty shady but that�s all I could come up with.
But here�s a fitting reply to your links: XXXXXXXXXXXXXXXXX http://news.zdnet.com/5208-1009-0.html?forumID=1&threadID=11150&messageID=222390&start=-1 XXXXXXXXXXXXXXXXX AND XXXXXXXXXXXXXXXXX http://news.zdnet.com/5208-1009-0.html?forumID=1&threadID=11150&messageID=222462&start=-1 XXXXXXXXXXXXXXXXX
Basically, ZDNet was late with the story, all the patches were up and running on the Sun site months before ZDNet printed the article. If someone downloaded the JDK or JRE from Sun, way before the ZDNet article, they would get the fixed version. Its not clear why ZDNet even printed this story.
But seriously, your point would be�.Or, were you making the point that MS is not the only SW that has security issues? In that case, well, we all know that.
"java is more vulnerable in comparison to .net because Java is implemented on a variety of platforms and some internal implementations are vendor specific so takes longer patch cycle."
Java is itself a platform. So, I think by platforms you mean OS'es. In this case, I think its really twisted logic as Java cannot be blamed for the underlying OS'es.
I don't think anyone can say that a platform does not have security issues. Every platform has those issues. Even real OS'es like UNIX, BSD. But that�s a different story altogether.
And I also think that MS has so many viruses written for it, in a large part because, it is so widely deployed. Still that's no excuse for a shoddy system. However, I do not mean to imply that the same would happen to Linux or UNIX if they were more widely deployed, like in the desktop environment. Reference: XXXXXXXXXXXXXXXXX
http://www.theregister.co.uk/2003/10/06/linux_vs_windows_viruses/ XXXXXXXXXXXXXXXXX You are saying that its actually bad to have a vendor neutral development platform. Its bad to have competetion etc. etc.
�.net runs only on Windows so its easier to patch.� So, your point is that .Net is better because MS Windows is easier to patch?
But here something that blows your statement out the window. XXXXXXXXXXXXXXXXX
Also, I am still waiting for the KamaSutra patch which hits Friday. Don�t really know why they are sitting on it. XXXXXXXXXXXXXXXXX http://www.theinquirer.net/?article=29426 XXXXXXXXXXXXXXXXX
By the way, ever since time rolled into the 21st century, every distro, every JRE, JVM implementation worth mentioning has automatic updates.
"any security patch specific for .net 2.0 is yet come. " Absense of proof does not constitute proof of absense. Discrete Mathematics 101.
But let�s assume for a moment that it does and address your statement in particular.
Apparently, your googling skills are maybe a bit off. So, let me correct you a little bit on your first post. Heck, I will do better than that. You just made me break out my bookmarks for the past 2-3 years (@$^%$ ANGRY GEEK THREAT &*^*&^).
Pay attention now.
Go to : XXXXXXXXXXXXXXXXX
-- http://secunia.com/ XXXXXXXXXXXXXXXXX -- Search for Java, J2EE and .Net. Here are the results. -- Java  306 Secunia Security Advisories and 280 Viruses -- J2EE  10 Secunia Security Advisories and 0 viruses -- .Net  1035 Secunia Security Advisories and 9812 Viruses So, there you go. So much for �any security patch specific for .net 2.0 is yet come.� You made it sound like it is actually a good thing that there is no security patch for .Net. Maybe MS screwed the developers over again. �Developers, developers, developers, developers��� For a reference on the �Developers� thing, here�s a pretty funny video of Steve Ballmer. XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX Click on the first link. For a more detailed discussion on how MS has been screwing developers, here�s another discussion about topics from WinFS to the Monad fiasco to some complaints from MS shops. XXXXXXXXXXXXXXXXX
http://www.pcmag.com/article2/0,1895,1840802,00.asp XXXXXXXXXXXXXXXXX Please feel free to click on the �next� link at the bottom for a more detailed POV.
"and about MS not building any products with .net what's that try running SQL server 2005 without .net 2.0"
Could you please explain that in detail? What really would happen if I try running "SQL" "server" 2005 without .Net 2.0? Is SQL Server 2005 built WITH the .Net platform? Or does it use a few libraries for connectivity, or as an API? I am ignorant on this subject as I have not tried installing or running SQL Server 2005 without .Net 2.0.
As far as I know about .Net and SQL server, the CLR was introduced to SQL Server to allow developers to write stored procedures, functions etc. in .Net languages. Is this the equivalent of JDBC? It seems like a pretty obvious idea and I think .Net should have been allowing developers to write SQL code for a long time. If not, how were .Net developers writing SQL code in their apps? Or did MS finally decide to play catch up again?
As far as I can tell, the CLR is built into SQL Server just to serve as a runtime environment for .Net SQL code. In fact, SQL Server should not require the .Net runtime to be installed or ran, at all if its not built on the .Net platform, but apparently it does. So, someone who does not want the .Net runtime in his/her SQL Server environment HAS to have it. That�s a splendidly bad idea. It would be better if there were no dependencies like that with an option of integration if someone needs it.
We in the Java world have been writing SQL (stored procedures etc.) code in Java programs since I don't know when in our apps. To be precise, JDBC has been available with JDK 1.0 (1996). Welcome to our world.
"and my friend is a little out of recent developments. .net framework is tightly integrated w/ the next version of windows with major subsystems -Presentation, Communication, workflow etc. .net api is likely to replace the Win32 API for most of development using windows. " No its not. That's a lie. I hope it was more out of ignorance than the hope that no one would notice. I guess I was not clear enough. But then again, I was. I repeat my question from above.
�Why is NO, I repeat NONE, of MS products built with .Net?�
Here is your answer:
�and my friend is a little out of recent developments. .net framework is tightly integrated w/ the next version of windows with major subsystems -Presentation, Communication, workflow etc. .net api is likely to replace the Win32 API for most of development using windows.�
What does having a .Net framework based interface have anything to do with a product built �IN� .Net. As you yourself said, .Net API is ���.. Who is talking about an API? I said, built in .Net. By the way, its good MS is not building .Net dependencies into its OS. Why would anyone in their right mind introduce dependencies of managed code, a virtual machine etc. into an OS? An OS needs to be fast to manage all the hardware. Its better for an OS to make calls natively to the underlying architecture. To me, by accident or design, it�s a good thing that MS is not integrating its OS with the .Net platform.
Being from the .Net world, you must have heard the name of Richard Grimes. Long term .Net developer who left the platform and has a blog on his reasons why. Good reading.
Here�s his home page. Which would answer a lot of your questions. XXXXXXXXXXXXXXXXX http://www.grimes.demon.co.uk/index.htm XXXXXXXXXXXXXXXXX Quote: �Is .NET a mere wrapper around Win32? Well, not entirely. Most of the framework library is managed code, and only a small proportion is calls to unmanaged code. However, in this article you will discover that successive versions of the framework library have got proportionally more unmanaged. The current version of the .NET library (2.0) is the worst so far in terms of the number of calls it makes to unmanaged code and the second worst in terms of the number of methods implemented in unmanaged code.�
Meaning that .Net 2.0 is the version where Windows has moved away the farthest from the .Net platform.
For a detailed discussion about this with data for each successive .Net implementation, go here: XXXXXXXXXXXXXXXXX http://www.grimes.demon.co.uk/dotnet/dotnetWrappers.htm XXXXXXXXXXXXXXXXX
It even has graphs and pictures and everything.
As to your, �.net framework is tightly integrated w/ the next version of windows with major subsystems -Presentation, Communication, workflow etc.�
Could you explain what tightly integrated means? Here�s something about the .Net framework in Windows Vista.
I quote Grimes, �Microsoft appears to have concentrated their development effort in Vista on native code development. In contrast to PDC03LH, Vista has no services implemented in .NET and Windows Explorer does not host the runtime, which means that the Vista desktop shell is not based on the .NET runtime. The only conclusion that can be made from these results is that between PDC 2003 and the release of Vista Beta 1 Microsoft has decided that it is better to use native code for the operating system, than to use the .NET framework.�
For a more detailed discussion about this, go here: XXXXXXXXXXXXXXXXX
Some other examples, �.NET is not shipped as part of XP Pro Service Pack 2, so it is safe to say that there is no .NET at all in XP. Furthermore, there is very little software distributed by Microsoft that requires the .NET framework. Microsoft has shown no intention so far to use .NET on a large scale on XP or the server versions of Windows, neither in the operating system, nor in their major revenue generating applications.�
�A later build of .NET 2.0 is distributed as part of Vista Beta 1. WinFX is not provided as part of the operating system, instead it has to be installed separately. This means that none of the operating system code can use Avalon (Windows Presentation Foundation) nor Indigo (Windows Communication Foundation). The intention is clearly that third party developers are expected to provide applications that use these technologies: Microsoft currently does not use them.�
Spend some time on the last line. �Microsoft currently does not use them.�
But wait, there�s more, �Finally, there is the issue of WinFX. Initially, this was called the Longhorn API (LAPI) and it was intended to be the foundation of all the applications in Longhorn. Microsoft have retreated significantly from this position. WinFX was not provided as part of any of the builds of Vista, so the clear implication is that Microsoft intends to develop Vista with native code (and possibly with a little bit of .NET through the framework library) and not to use WinFX at all. I cannot stress how significant this retreat is. Microsoft have so little confidence in their own application framework that they will not use it even in their own managed applications.�
For people hard pressed for time, all the 3 Grimes discussion pages have detailed conclusions towards the end of the articles.
Here�s another link from Dr. Dobb�s Journal about the whole Grimes leaving mess. XXXXXXXXXXXXXXXXX http://www.ddj.com/documents/s=9211/ddj050201dnn/ XXXXXXXXXXXXXXXXX Now this is what I meant when I said, �Why is NO, I repeat NONE, of MS products built with .Net?�
I don�t mean a few library dependencies, I meant an MS product built with/in .Net. My question still stands and I am still waiting for an answer.
Just to keep things in perspective, I don�t expect to convert anyone. .Net is your bread and butter just as Java is mine. If I get a job working on .Net, I would do it if I need to. But that still does not change the facts.
Having a board like this is important as a lot of people who are starting are looking for information on this topic when they are starting out in school or in their jobs etc. I stumbled on this board a while ago when I was looking for some information on app architecture decisions that a project we had had to be made. Its easy to get sucked into the whole .Net mess because initially, everything�s so easy and rosy. You get an app server, a DB server, an IDE right out of the box. For someone who needs to clear a semester or course for credit, nothing better than .Net. Even so for small applications or projects with limited resources.
I am not saying for a minute that Java/J2EE is the end all be all of application development. To assume that would be crazy. Ruby/Rails looks promising. And there would be others. But Java is extensible and not dependent on one vendor. We already have JPython among others. JRuby could not be far off. While Windows developers are still transitioning from procedural to the OO world. The open source world would already be working with functional languages. A good book on this is �Beyond Java�. A must read for any developer. Here�s the link: XXXXXXXXXXXXXXXXX
Here�s the famous �101 reasons why J2EE is better than .Net� Makes for a good read. XXXXXXXXXXXXXXXXX http://www.manageability.org/manageabilityWiki/WhyJavaIsBetterThanDotNet XXXXXXXXXXXXXXXXX
By the way, a funny little detail. I did a google search on your name just to see if you are affiliated with MS in any way. Guess what popped up? There are a couple of messageboards where you, or someone with your name, is asking for a crack/serial for Visual Studio 2003 Enterprise Architect. The original boards are 404 now, but clicking on the cache link for those posts do give the original articles. Maybe a tall coincidence, but� I thought you didn�t like free software. What�s up with that? Even I have a lisenced version of .Net.
-- Harsh C, February 4, 2006
u are a hippocrate u use windows as ur primary os and talk about java use Solaris then come back. stop re quoting what i have said already, its just non sense.
-- Sandeep Pradhananga, February 5, 2006
welocme to real world pal, JDBC is a pure copy of ODBC. MS data access evolution 1. ODBC- 1990s 2. DAO 3. RDO 4. OLE DB 5. ADO 6. ADO.net 1.x 7. ADO.net 2.0 MS data access has evolved over the past decade enormously and has features such as disconnected datasets, XML persistence and is much superior to what Java can offer.
whatever happeded to security.. make unmanaged system calls, wrapper whatever,... .net is an application development framework not a real time system. .net does a good job abstracting the users by APIs which would be very difficult otherwise using those win32 c apis. it is a "rich programming model".
however the point is not that... java is full of overlapping technologies Hibernate, EJB, JSF, Jakart Srtuts .. all of them doing the same things.. one cool feature in one framework and the other feature missing pretty much like Gnome and KDE
windows is a more targeted os for malware and security flaws because most of the users are naive users like u; who allow their computers to be exploited. i hardly have any viral attacks in my computer. and i have not patched my system after SP2. only paranoids patch their computers regularly. play safe like me dump ie or use it rarely.
about WinFX... as not being part of WindowsXP... u are right because it is a native part of Vista and is being back ported to WindowsXP because XP's product cycle is due 2011 and XP is still going to around.
languages in the .net framework are devloping faster than java C# included generics in the second major release of .net 2.0 whereas it was released (i don't know) but not before the fourth or fifth release.
C# 3.0 is due next year and there are cool features like LINQ (Language Integrated Query).
recently i looked at sun enterprise studio a pop tool i guess. it lacked intellisense. intellisense has been a part of Visual Stuio long ago. MS practically invented visual programming. its a much easier environment to work with.
take .net as a "Rich Programming model" for next generation apps. and last of all 'Get your facts right'. stop quoting others.
-- Sandeep Pradhananga, February 5, 2006
get ur facts right harsh.
-- Sandeep Pradhananga, February 5, 2006
i use Visual C# express 2005 and Visual VWD express and Sql Server 2005 all of which are free for download and noo keys are required. MS is providing this superior dev tools for free!
-- Sandeep Pradhananga, February 5, 2006
ASP.net was developed using C# and many other experimental compilers and may be even j# was written in c#. many components of VS IDE require .net framework.
-- Sandeep Pradhananga, February 5, 2006
Yes you are right. Quoting you, or anyone really is cumbersome and annoying and a bit forced. But it does provide a good context of what I am talking about. So, I am not going to stop quoting, I will tone it down a little bit though. However, I can�t resist this one. �stop re quoting what i have said already, its just non sense.� OK, if you say so. I agree completely, whatever you said already was just non sense. ** rimshot**
I use windows and linux. At work, I use Windows as my primary OS and develop in Java as that�s my environment at work. Where�s the problem? iTunes is not available on Linux nor are some of the games I play. I think I can use windows and talk about Java at the same time. Doesn�t look like a problem to me. I hate Solaris. Like I said, please make some sense. I don�t see any way you could have predicted that I use Windows. As usual, your comments are just flames.
5 posts this time around. Not very bright, are we?
Or did you just call me a �hippocrate � (your spelling, not mine) because I called you a liar and that you pirate software. Believe me, I have good reasons for calling you a liar as I wrote in my last post.
Why would the need arise for asking around for cracks/serials if you use �Visual C# express 2005 and Visual VWD express and Sql Server 2005� and �which are free for download and noo keys are required� and which �MS is providing this superior dev tools for free!�
Good for you. But please explain how this ties in with anything that�s being said on this board? You just type 1 line, make some noise and move on. You never answer anything or continue any previous discussion.
As far as MS providing free tools, first of all SQL Server is just a Trial version. That was another lie. Now tell me this, how widely is Visual C# Express used in the industry? Why would any project use it instead of Visual Studio, which of course is free till November, then you have to pay for it. Visual C# Express is just a light weight version of Visual Studio for C# development. It does not include the entire scope of the .Net environment. Start coding there, then get hooked on .Net and all the rest.
As for Visual Express VWD, it�s a weak attempt to enter a market saturated with great tools like (Macromedia Dreamweaver, my personal choice) with a free tool, a� la IE.
By the way, if anyone is looking for a great editor, check out Amaya, an open source editor which does what VWD does and more, e.g. �XML applications such as the XHTML family, MathML, and SVG, among other W3C approved standards like RDF and XPointer.� (from the Amaya home page) Not only that, it allows you to author web pages while browsing. That my friend, is cutting edge.
Also, unlike you implied in your post, registration is required for getting a key.
Arguably, yes, �JDBC is a pure copy of ODBC�. I am not too sharp on the history of JDBC, but far as I can tell, it is. Not a �pure copy� though. JDBC was designed for DB access from pure Java code. However, any language that implements DB access does not automatically become a clone of ODBC which, by the way, MS was involved with, as part of the SQL Access Group. Its not some super innovation on MS�es part.
Here are some differences:
1. ODBC uses native C calls through an interface, which depending on the implementation might have issues with security, portability etc.
2. JDBC is OO, whereas ODBC is not, uses pointers and everything. So, if someone has to develop DB access API�s for an application, its easier and more intuitive in JDBC. But of course, MS has moved beyond ODBC with ADO.net and all that.
3. But ADO is just an OO wrapper layer on top of ODBC. Think performance here. But I don�t think you quite appreciate the impact that having multiple layers has on any technology as clearly shown by your, �make unmanaged system calls, wrapper whatever� comment.
4. JDBC DOES have disconnected datasets, called cached rowsets. I don�t really know why you have to put up such posts which are easily verifiable as lies.
5. Furthermore, JDBC also supports scrollable resultsets, batch updates, supports SQL3 datatypes.
6. JDBC allows more control over an individual table. JDBC also supports data paging, a very important part of keeping your available memory under control. ADO.NET has to resort to paging using stored procedures.
7. Bringing in a large amount of data requires us to have a large amount of memory available and takes a substantial amount of network traffic. On a CachedRowSet we can set the page size for the amount of data we need for each round trip and then just call the nextPage() method. The second unique feature is listeners. We can define a cursor or a row listener to tell us exactly when we have moved rows or changed values. This can be very effective to notify us in real time about data changes, especially if it is being done by another user.
8. Furthermore, JDBC has Prepared Statements. ADO does not. Prepared statements have a security advantage as it does not require building a sql string which can be targeted as a buffer overflow attack. Prepared statements are precompiled. So, they perform much better than regular SQL code embedded in a program.
9. XML persistence. Ever heard of Hibernate, iBatis? They both provide XML persistence.
Not again about security. At least read the previous posts. Here it is again: From Secunia Securities.
Java: 306 Secunia Security Advisories and 280 Viruses _____ J2EE: 10 Secunia Security Advisories and 0 viruses _____ .Net: 1035 Secunia Security Advisories and 9812 Viruses _____
You are right about that, .Net is not a real time system. If it was, it would be on the Mars rover or in military applications.
Then the post follows up with the same old recycled gripes. �java is full of overlapping technologies Hibernate, EJB, JSF, Jakart Srtuts� That�s right, the java stack is technology rich. Are they overlapping? Maybe. Mostly not.
Hibernate: OR Mapping tool EJB: Infrastructure to build distributed applications, running on different servers. Where�s the overlap?
There is overlap in some technologies and here�s why. Java Server Faces and Struts are overlapping to some extent. For a good reason. Struts is an older, mature technology whereas JSF is relatively new. The Open Source community does things a little differently than MS. Instead of having a 5 year plan like the former Soviet Union, then coming out with a late release, Tuesday security updates etc., new frameworks are being built, deployed and thus, tested continuously. With time, a clear winner emerges and is then adopted. If you work in a Java shop, you don�t have to learn everything. Most projects use a standard and mature stack. Like, right now it is, Struts calling beans through the session fa硤e on a DB backend. More or less. Pretty similar to what .Net apps do. JSF is coming up pretty fast, some project will eventually move over to JSF. The 4 technologies you listed are an extremely small sub set of all the technologies in use, development or testing. The actual number is more than that. We have multiple technologies for DB persistence, MVC, templating, remoting etc. etc. But no one is using all of them at the same time. It�s a better, a more iterative process more in line with extreme programming, continuous testing methodologies. We always have the good old proven technologies, while at the same time having the choice to be early adopters of new cutting edge technology.
By the same token, why does MS itself have:
Visual Studio 2005 Express Editions Visual Studio 2005 Standard Edition Visual Studio 2005 Professional Edition Visual Studio Team System Editions
What is that all about? Then why if you have Visual Studio, do you also have Visual Express VWD Visual C# Express
They are just marketing kits with some switches thrown off or on here or there with no real differentiation, much like XP and Pro. Vista would have about 7 different versions. This to me seems like a lot harder to digest. The Java (platform) at least provides valid technology differenciation.
Your argument that windows is most targeted and affected system because of naﶥ users is not just your opinion. Top MS execs have been quoted saying that. It�s a most pathetic and self serving attempt to shift blame. So, now users of your systems are to be blamed for your shoddy code. Windows claims to be a user friendly system, but only for smart people!!! By the law of averages, most of the people in the world will be average, or as you put it naﶥ. It�s the way it is. You can�t change that. At the same time, a lot of Mac users will also be average. However, I don�t hear of any Mac viruses. And no one forced MS to break all conventions and go with ActiveX controls, generics etc. Its sad that Java is also copying .Net on generics, maybe more so for marketing purposes. This stuff is best optimized at the VM level. I guess someone should hire you as a security record with your personal computer. At the enterprise level, security is much more than putting up a firewall and running an anti-virus and of course Tuesday patches.
You repeat again, �about WinFX... as not being part of WindowsXP... u are right because it is a native part of Vista and is being back ported to WindowsXP because XP's product cycle is due 2011 and XP is still going to around.�
Wrong, wrong and wrong again.
I wrote a pretty lengthy piece in my last post about how .Net is NOT a part of Vista. Then you just type in another line. Well, thank God for copy-paste. From Richard Grimes site:
�A later build of .NET 2.0 is distributed as part of Vista Beta 1. WinFX is not provided as part of the operating system, instead it has to be installed separately. This means that none of the operating system code can use Avalon (Windows Presentation Foundation) nor Indigo (Windows Communication Foundation). The intention is clearly that third party developers are expected to provide applications that use these technologies: Microsoft currently does not use them.�
Spend some time on the last line. "Microsoft currently does not use them."
But wait, there�s more, "Finally, there is the issue of WinFX. Initially, this was called the Longhorn API (LAPI) and it was intended to be the foundation of all the applications in Longhorn. Microsoft have retreated significantly from this position. WinFX was not provided as part of any of the builds of Vista, so the clear implication is that Microsoft intends to develop Vista with native code (and possibly with a little bit of .NET through the framework library) and not to use WinFX at all. I cannot stress how significant this retreat is. Microsoft have so little confidence in their own application framework that they will not use it even in their own managed applications.�
Here�s the link to the full article. X
http://www.grimes.demon.co.uk/dotnet/vistaAndDotnet.htm X X
Repeat after me. .Net is NOT a part of Windows Vista. It won�t be.
Later on you say something about LINQ and how it will be introduced in C# 3.0 due next year.
I got news for you my friend. Check this out: X http://sourceforge.net/projects/saffron/ X
The Saffron project is an �extension to Java to incorporate SQL-like relational expressions.� Yes, we already have Saffron (to which LINQ is an equivalent) working, right now, available for download. This is an extension based framework, much like other open source frameworks. And by this time next year, it will incorporated into the next version of Java too.
Now, you have covered a vast scope in technology in one liners. Then you go on about the IDE thing again. You checked out the Sun Enterprise Studio. It has come a long way especially with Mantisse. However, its not the IDE of choice in the Java world. You need to check out Eclipse, Rational Application Developer (new version of Websphere Studio App Developer), or my personal favourite, IntelliJIdea.
Here�s my comparison of VS .Net and the common Java IDE�s.
1. VS does not support build-on-save. It�s a great feature. Its kind of like an iPod. You don�t notice it much if you don�t have it. But once you used it, you can�t live without it. We just type and go, all project building etc. is automatically done. And of course, if the code base is too heavy, there�s an option of turning it off.
2. Eclise and RAD and WSAD and IntelliJIdea are fully integrated with ANT. Unlike the .Net concept of a build platform: �F7�.
3. Every .Net developer raves about Intellisense. Probably because that�s all there is. It is actually a pretty lame technology. Here�s a pretty comprehensive list of why Intellisense is not what Java IDE�s are capable of. X http://www.doitwith.net/PermaLink.aspx?guid=fe56e809-1ec6-40e3-bea0-229f30aabf9f X
Go through it, maybe you will learn something.
4. Refactoring support is pathetic at best in VS.
5. No support for overloaded methods.
I would provide pictures if I could here. But they are available here: X http://msmvps.com/blogs/jon.skeet/archive/2005/12/22/79631.aspx X
6. Support for tons of great frameworks including Struts for MVC, JUnit for testing, Ruby/Rails support to name a few.
Java IDE�s do things which VS can only dream of. Please feel free to go through the posted links. They are much more comprehensive. For the longest possible time, I have listened to how wonderful Visual Studio is. Even this board has some of those comments. Its good, for the most part, its actually pretty good. But, once I used it and had a better POV vis a vis eclipse, or RAD, or intelliJIdea, I would not give them up for any conceivable reason.
You really do need to stop reading MS advertisements and read some books or something.
-- Harsh C, February 6, 2006
"Some other peeves, no punctuation, the grammar is shoddy, some sentences do not even make sense"
Well, quoting sentences is one of the most important things that I recently learnt from one of the scholars who has been constantly spamming (oops! contributing) to this thread. I have never seen anyone except some scholars quoting or even writing above (quoted) type of sentences. No one except some of the scholars found the grammar shoddy in any of the topics. Infact one should read the response twice before posting. I think only then one will realize whose grammar was shoddy. Moreover, its very clear from the title of this thread that it deals with technical topic not a grammatical one. If one still doesn't like the grammar of the content posted, then its a personal problem and I think this thread is not meant for personal problems. I would also like to mention, that there is a thin line of difference between fight and debate. But its really unfortunate that some of my friends failed to understand that. If some of my friends still don't agree with me, then take some time and read some of the past spams (oops! responses) posted. I think then they will probably agree with me.
Writing a dragon-sized response doesn't mean than one is always right. Moreover, one should be laconic rather than verbose. But I think the recent class-apart scholar of this thread is VERBOSE. I have no two ways about it. Its good to make a point in one sentence rather than using 10 sentences. And that was possible. If one goes through some past responses, there were some very good adjectives used. These adjectives were never used in this thread. Using these adjectives clearly demonstrates the level of immaturity a person can reach to. Some of the persons do apologize knowing that they are sounding rude and harsh. Knowing but still doing is one of the funniest mistakes that one can ever commit.
In so many response, one can find good number of unanswered questions. But it doesn't mean that one should pop up again and again with the same question. Below is one such question.
"Java banks on portability. I still wonder whether it is successfully achieved in J2EE. Recently I wrote one program that handles an exception and on the basis of that, some processing is done. Program was running fine on one server.But when I got it deployed on another server, exception thrown was a different one. Now, where the portability went, nobody knows. For ensuring portability, one cannot rely on developer to know the discrepancies of each and every vendor before starting the development."
I think this question is still unanswered. And this is just the second time I have typed this question. But I think its not my mistake because some scholars have been tempted me to do so. "BUT I AM NOT WAITING FOR ITS ANSWER".
I have also learned on how to search google from some of the responses. One can find n number of links in google. No matter the what the search title is. May be its "MS Windows /.Net vulnerablilities or Java/J2EE vulnerabilites. One should try both before posting. But again my friend was unfortunate to search on both. He tried only the first one.
Some responses were written on very crude assumptions. One of them was "Sun products can have security issues. But Sun can fix it. Ms products too can have security issues but they can't fix it. And even if they fix it, Sun is better than Ms". "Sun can enhance/improve on its products but Ms can't". Friend, both the giants are equally proficient to improve upon and fix their products.
And finally I would like to mention, its better if we try to keep the thread interesting rather than making it a personal issue/fight. I am really sorry to say today, my response is not a techincal response. But I think it was important to make some of my dear friends understand what they did in last few days. I don't expect any reply to my response. But then too if I get some replies, I wont reply to those replies. Because this thread is meant for sharing information rather than fighting.
-- Puneet Monga, February 6, 2006
some people have ample of time staying around and typing other people's name into google... take it as a new hobby! But MIT chose .net over J2EE. SQL Express is free for download man....
-- Sandeep Pradhananga, February 6, 2006
what about 64 bit support?
-- Sandeep Pradhananga, February 6, 2006
My chief problem with MS ASP.Net is the very thing that makes it attractive to novice web app developers; Web Forms. WebForms is an attempt to make web app development appear like old fashoned VB client development. WebForms somewhat hides the underlying stateless http infrastructure, presenting a palette of stateful controls instead. So it's much easier to develop simple boilerplate apps, especially if you're unfamiliar with web apps in general.
But when you want to do perfectly normal but more sophisticated things, WebForms becomes an obstacle. I've long considered Microsoft philosophy to be like an overeager butler who tries so hard to anticipate your desires that you and your butler are always tripping over each others shoes. I would rather blow my own nose, thank you. A framework shouldn't do so much for you that you have to fight it to do something unusual. WebForms is guilty of this in spades.
In addition, by abstracting away the stateless, multithreaded nature of the Web, ASP.Net lures unsuspecting programmers into making fundamental mistakes like storing session-wise data in Page class level properties. Having thread-wise request parameters mysteriously appear in Page level properties like Page.Context also confuses the distinction between local ( automatic ) storage and object 'thread-shared' storage. Would it hurt so much to tie all thread-wise parameters to handler argument objects rather then try to create the illusion of workstation client programming?
It boils down to this: how close to the road do you want your environment to be? How much do you care about having complete control over your range of possibilities? J2EE doesn't hide the true complexity of the web environment for your initial comfort, instead you get complex but powerful tools for dealing with that complexity. ASP.Net deceives you with an easy introductory learning curve that gets ridiculously steep when you're ready to move to the next level of sophistication.
Finally, my biggest beef with MS in general is their much-lauded "integration." If you've got problems with a J2EE server, you know where the configuration files are and how it interacts with it's support systems. With Microsoft products, a problem in one place ( say the IIS file system permissions ) can have bizarre effects in apparantly far removed subsystems.
A non-dotNet example: apply a PKI cert to IIS and your file server on the same machine now requires a matching .p12 for LAN clients. Gaack! A web server is not a file server and they shouldn't share authentication rules by default! I've never found a way to break this connection. ( If you know how, I'd love to hear it. )
The advance of programming methodology has mostly consisted of better ways to isolate, encapsulate and reduce inter-dependencies to make the whole business more manageable. Microsoft's integration moves in the opposite direction merely to make initial system setup easier, to the detriment of clarity and control.
At least for those who aren't afraid to get a little dirt on their hands.
-- G.R. Svenddal, February 26, 2006
I come to this topic from a google seach on my windows. C and java(the IDEs, respectively), nobody can dely that they are both GREAT language invented by genius. The only difference I saw is, one is old(matured, and priced it's value for sale), the other one is young(fresh and passion, it has already attracted thousands of smart guys, they could make a living easily, and they could afford their life be volunteers). Software developers are becoming more and more selfless, they are really GREAT people than others. What not stop and make live easier? Maybe learn some guitar or join a bascket ball team could give you more flexibility.
-- shown stockman, March 16, 2006
Holy cow, this discussion thread has gone on for nearly 4 years. Yet I feel compelled to give a response and I don't know why.
Having worked at several major companies that went thru months of discussions like this as we acquired company after company with different technology stacks, I figured I would contribute what I have learned. Take it or leave it.
Deciding which is better, Java or .NET, is like hitting a moving target. The technologies are constantly evolving. More so in the Java space because of the plethora of open source projects out there.
But when making a decision, you need to throw your emotions and pre-conceived thoughts out the window. You need to focus on several factors:
Existing programming knowledge of your team
You need to look at the current staff and determine what technology they know the best. If a majority of the guys (and gals) know Java well, then Java should be the choice. If Microsoft, you need to be specific about which Microsoft tool. I have found that many times people say they are doing .NET but they are not doing .NET at all. Be specific about what they are doing. If they are doing C# and ASP, that is what you are looking for. Not Visual Basic or C++.
Heavy Client, Web App or Hybrid
If you are writing a heavy client, there is a CLEAR winner. Microsoft. They own the client operating system and the tools they have to develop heavyweight client apps are superior (as of today) to anything available in Java - including the WYSIWYG tools in both Eclipse and NetBeans. While I worked for a company that makes millions and millions of dollars off of a Swing app, it is more difficult to find people that know how to write GOOD swing apps.
If you are writing a lightweight client or web client, its a virtual tie when you include all the neat tools available in Eclipse (specifically myeclipseide). You don't need to be a rocket scientist to write a good app in either technology stack.
If you have existing code written in VB or Java, and there is a bunch of it, it may be best to continue down that technology path. Even if the existing code is non-performant, you still have learned why. Switching to a new technology you will have to re-learn such issues.
This is a big one. And depending on the level of support you need, the costs go up. It is quite feasible to write a full production, 64 bit enterprise System in Java for $0. And with that you get an awesome Linux 64 bit operating system (like CentOS) and highly performant "application server" from JBoss, and a smokin' IDE from Eclipse or Netbeans. But if you need support, you can spend several thousands of dollars, if not tens of thousands. Luckily, for the most part, the forums of many of these technologies are more than enough.
Microsoft definitely has a bigger barrier to entry. Visual Studio is not free, neither is their database, operating system or IIS. Getting started can cost several thousands of dollars. And depending on your venture, and the rate at which new projects fail, it is something to be considered. You typically get limited support with this however.
I sorta mentioned this above, but I wanted to elaborate on it. Much of what you need to use in Java is available in the open source community. The community forums are very active and questions asked are typically responded to quickly by other people in the community. But if you determine that you cannot wait for someone in the community to answer and you need support, then there are costs. For example, JBoss, while free, charges about $15k a year for support. A hefty sum. And if you want support on your Linux, you would have to get off of CentOS and switch to Red Hat which can cost about $2k per server.
Microsoft has a number of support options which get into the tens of thousands as well. Microsoft has an active community as well with forums and papers written on the technology on their msdn site.
The key point I wanted to mention is that Java, even open source Java, is not necessarily free. But Java, at least to get started, has a much smaller barrier to entry than Microsoft.
You should NOT immediately focus on:
Which technology is more performant.
This is nearly an impossible task. All results, no matter what, are looked at with raised eyebrows. Getting into discussions like this is like saying Jesus Christ runs faster than the prophet Mohammad. Ugly discussions that typically produce inconclusive results and waste a lot of time.
Which technology is easier to write
This is a ridiculous discussion these days. Both the Java IDEs (Eclipse, Netbeans) and Visual Studio present almost the same widgets and tools. This all just boils down to personal preference. Silly discussion, waste of time.
Which technology has the coolest buzzwords, technology.
Who cares that you can do EJB3 or that you can do .NET "managed code". Its all marketing. And I have seen, many, many times, projects based on the latest and greatest technology being thrown in the garbage. It is important to understand what each stack is doing, and how it fits into your overall architectural scheme. But each stack actually presents you with vary similar ways to do the exact same thing.
NOW, HAVING SAID ALL THAT, MICROSOFT DOES HAVE ONE EDGE
If I could count the number of hours and days that have been spent deciding on which technology to use in a Java application, I would be very afraid. For example, for persistence, you have to decide between Hibernate, EJB3, JDO, etc. Typically, these decisions involve reading up on each technology, doing demos and comparisons, etc. If you choose Microsoft, there is typically just 1 choice. Take it or leave it. And the choice is typically not that bad in comparison to what is in Java.
"Choice" is a major advantage and disadvantage in Java. Typically, you can customize your application to run the way you want it to run with an underlying framework that is already written. But you have to choose. And then your choice runs the risk of being obsoleted by the next big thing to hit the java open source community.
If you want to keep things simple, much like a person who wants to drive a car and not care much about how the engine works or how to modify the engine to make it faster, then lean towards Microsoft.
If you like to tweak your car, understand how your car works from front to back and be able to swap out any part on your car with an aftermarket, more performant part, then lean towards Java.
Your choice on ASP.NET vs. J2EE is largely dependant on your companies personal preferences and comfort level towards the topics discussed here.
Hope this helps someone.
-- Mark Ricard, March 22, 2006
Both .Net and J2EE allows you to build web services but the concern here would be to ponder the Life of Technologies, ROI, Time to market and reach. J2EE has an edge over Microsoft for being platform independent but the only difference should not carry away your business needs. It is not the fight between Brands but rather it's analysis between your investment options.
-- Umakant Narkhede, March 25, 2006
I love Java. I love .NET.
They are both great, however there are so many claims that .NET ties you down to one way of doing things. Or if you use .NET you only contribute to the evil empire of Microsoft.
However both of these are completely incorrect.
What I can't understand is why Java developers cannot see advantages in .NET and vice-versa ... I started OOP on .NET, however Java is a beautiful platform, and is a clear winner in many areas (as many of you have so passionately noted).
In this modern age of programming, I canﾒt understand why a Java programmer couldnﾒt learn .NET, or a .NET programmer couldnﾒt learn Java.
P.S. G.R. Svenddal, WebForms with ASP.NET can be considered completely optional. In fact, event-driven programming in its entirety can be considered optional... ASP.NET can just as easily work in a classic mode ... a la ASP or JSP with loops around HTML output, manually grabbing Form posts, or handling Session, etc... however I find ASP.NETﾒs abstractions (when used correctly) to provide MUCH FASTER development time... and if you ever want to drop down to the classic model, you can.
-- R K, March 27, 2006
What's wrong with J2EE? Well, a lot of things. MS .net has about 45% of the enterprise market right now. That's a big number, and would normally lead one to believe it is on par with J2EE.
But, consider the fact that when you choose .net, you are choosing a proprietary technology that only runs on 1 company's operating systems. So, when people choose .net of J2EE, they are throwing away the advantages of shopping the market. BUT, they do it anyway!
What does this say about the overall quality and productivity gained by using .NET - a lot. In otherwords, .NET has to be that much better than J2EE to convince decision makers that it is worth going down the proprietary route.
I used J2EE for a good long while until I started seriously looking into .NET. Now I use .NET most of the time for projects. I've found it to be cleaner, smarter and richer in features. Visual Studio .NET 2005 is just plain awesome as far as IDE's go.
Furthermore, a rewrite (from scratch) of a complex J2EE app in .NET took about 25% of the time it took to develop the original app in J2EE.
In any case, here are a few of my issues with J2EE,
- First of all, if EJB made any sense at all, why are they abandoning the original concepts in EJB 3.0? The original spec was not produced by experienced developers. It was produced by a bunch of IBM/Sun employees who never wrote an application in their life. The result was something confusing, tedious to implement, and difficult to deploy.
- Classpath issues - There has to be a better way! Oh, wait! There is a better way: .NET provides a beautiful solution to this problem.
- ear's of war's of jar's, each with multiple XML descriptors, and no clearcut way of doing packaging unless you put together some cludgy scripts.
- most J2EE development today requires choosing from many open source projects. it introduces odd dependencies among jar files, some of which will never load correctly because of classpath issues (e.g. struts, tiles, log4j, hive, hibernate, spring, ant, jdbc drivers, mail, activation, numerous tag libraries, etc., etc., etc.)
- zero, or at best poor, debugging tools. Visual Studio .NET provides a beautiful debugger which works across all tiers.
I feel that J2EE as a platform is found wanting in many areas. If SUN Microsystems would get off their ass and do something about it, maybe we would see some evolution of the platform.
With the introduction of ASP.NET 2.0, we see some really useful components introduced - truly useful and amazing stuff like master pages, web parts, user management, sophisticated caching, data binding. All things that are very useful for working programmers. What improvements have we seen in J2EE - well a remake of EJB into POJO's. Should have been like that from the start!
And the next time you here that J2EE is 'industrial strength', and .NET is not, think again! Keep in mind that we are talking about a system that generally used to FORMAT WEB PAGES! Furthemore, .NET is running quite a few very large web sites.
In case you are wondering, I worked for MS for a little while as a contractor, and I drank the juice:-) Prior to that, I had only used Java/J2EE (as well as C++/C). My exposer to .NET during that time changed my opinion - I found it to be just plain better, faster and more productive.
Anyway, my 2 cents.
-- kevin delafield, June 29, 2006
Microsoft does package a nice solution. However, I think if you are going to throw out a number like MS .net has about 45% of the enterprise market, that you would say where that number came from. And what is that number anyway? Is it volume of sales in the last year? Number of projects in the last year? Total amount of lines of code versus from all time? I don't there is any validity to it, but if there is, I hope you post it!
The truth is, neither is a clear win technologically. You can get projects done just as fast in .Net as you can in Java. I work with both, and both platforms are extremely capable and feature rich. And both platforms have bugs and room for improvement. Although, I must say, it is easier to develop in the C# syntax, but Eclipse blows Visual Studio out of the water for actual coding. Visual Studio has the edge on the gui development (although I have been burned by it's bugs in prior versions and I am always scared it is going to mess up my code again!)
Why do you think debugging is missing from Eclipse? I find Eclipse's debugging is very feature rich, and in that regard, I feel Eclipse beats VS 2005.
Why do you think the people developing the EJB 3 spec had never wrote an application? Did you do research on this? And what is confusing about EJB3? I thought it was very easy to use and extremely simple to deploy. Truly, it is faster and easier to develop with it than anything stable I have found in .Net! I don't particularly like working with DataSets. If you are going to put such a slow wrapper around your code, it seems you would just do OR/M and serialization. Not that I don't like DataSets, I do, I think they are an awesome tool to have in the toolbox, but it is not nearly as elegant as working with objects from the OR/M. MS as far as I know still hasn't released their OR/M tool, I think they were going to call it ObjectSpaces. Is that right? Anyway, if it is released, I would be willing to bet that it doesn't work nearly as well as EJB 3.
ASP.NET 2.0 is a nice framework to get out a few quick, simple pages. If you go beyond simple, it falls apart. But so does JSF! I think if you were going to do that comparison, both frameworks are pretty similar. I like JSF Facelets a lot, and I think if I had to choose between them, I would go with Facelets. The debugging isn't as nice in Facelets as it is in ASP.NET, but it's simplicity and component library gives it an edge. And if you looking to bypass the AJAX limitations of ASP.NET and JSV, the good news for the Java contigency is that Java has choices-- like Google Web Toolkit and ZK. You may find a similar project to one of those in .Net, but it probably won't be as nice until MS comes along 2 to 3 years later and releases something themselves.
I too believe .Net is industrial strength. But really, what is the criteria? I also think Cobol, Fortran, RPG, Perl, Python, and Ruby are industrial strength. My criteria is simple, can it run predictably in production? I think .Net can. (Although I think you are going to pay oodles more to run it. Faster hardware to run Windows instead of Linux, Windows licensing, etc. Which may not be an issue for a small shop without a need to cluster and that is only going to operate for a couple years.)
I like Java and I like C#. If I had to choose between them, I guess I would like the language of C# better. But I would choose to use Java because of the tools, the great and vast library of code, the multi-vendor support, the price, and the fact that all the big technology names that are not MS choose it, like Google.
There will never be a true answer to which one is more productive than the other. It is impossible to derive on that answer scientifically, so any time you hear someone claim one or the other is more productive, you know that it is just an opinion. If you feel it comes from a reputable source, from someone that knows both solutions well, then it is your choice to believe them.
As far as Marcelo, the original poster, was concerned. I think he had a valid point. It does seem odd that MIT would use .NET over Java since MIT does seem like it would have closer roots to Java and open source. Academically, you can teach OOP in one or the other. But of course you have to look beyond that because when a student graduates they will certainly look for a Java job or a .Net job (and probably a .Net and Java job), but it seems there are more Java positions, and so it seems to best prepare students for a job, they would choose Java. (I look on Monster and Dice and see more jobs for Java. Of course the results are a bit tainted with Oracle and IBM posting a duplicate of a job posting in every major city for a job that doesn't even seem to exist)
-- M S, June 30, 2006
I came across this blog while searching for this answer as one of my client asked me the same question. I am just 5-6 yrs old in software development. But it seems that Microsoft and Sun people may not be fighting that much, about who is better, as we are.
I think that in software you always has scope of improvement.
But I would like to mention one of the incidence in my company. In one of the project we have to migrate some data from DB2 and oracle in a new DB2 database and application was to be developed in java. When I asked for the estimate for wrting 23 scripts to tranfer data (simple select insert) it came out to be too high as compared to the SQL server where you have to draw some digrams and rest will work.
I think these are some day to day things which are quite simple to perform in microsoft environment as compared to their other counterparts.I donot know how you people take these things. making things simpler should be the ultimate target for the technology guys, not complex that no one can use it.
If microsoft has made things simpler then I dont think there is any harm in it.Software development has come out in the business market from the hands of some unversity reaserch scholars who believe that till programming is not complex it is not programming. Some people in blog still think so. may be fear of job!!!!!! All physics rules are very simple one liner. I donot know why we believe that in software it should be as comples as possible.
It is good to know some good thoughts from experienced people in industry. bye
-- Rajiv Sharma, July 14, 2006
I only have 1 question:
Why choose ASP.NET vs. J2EE ?
-- John Doe, July 20, 2006
Thats a million dollar question!!!!!!!!!!!!!
-- Puneet Monga, July 21, 2006
You simply don't choose it (ASP). Ask yourself why open source in the first place? Why not Microsoft monopoly and what it means? It's very simple to me ...you don't choose Microsoft products. Or would you rather have ONE company dominating the whole market? No software's perfect but if we accept Microsoft as the main software producer and do not support other software we all end up with an uninspiring stale market where there's one winner and to many losers. ASP is good and so is J2EE. It's a bit like "The Matrix" movie.....ASP as the Architect and J2EE as the Oracle.....both brilliant but the Oracle is cleverer.
So next time you think what software to use think again.
-- Tony Boni, July 25, 2006
4 me it's all about taste : )
-- chandra lie, July 28, 2006
It was intresting to read diverse views and experiences from all. In my view, Microsoft products being propreitary and wants to, it will take all the good features from J2EE(eg. CMP,EJB3.0 annotations etc), frameworks (spring, Hibernate, Struts etc ), design patterns, Web 2.0 ( AJAX and RIA ) and other numerous technologies being developed for J2EE and then say "We have them all". In the long run, the J2EE will have it's core advantage of platform independence.
-- Nandikonda Laxman, August 3, 2006
I've done projects in on both .NET and JEE. I abandoned using .NET for server-side development and have gone strictly JEE for that. I do continue to use .NET to build rich clients that interact with my JEE middle-tier. Here is my server-side experience write-up:ASP.NET vs J2EE
What I ended up learning is that Microsoft has no actual .NET managed code application server stack (read my write-up and you'll see what I mean). Whereas the JEE stack is indeed a true application server stack with many crucial features present - and that all run in the JVM (turns out that simplifies a great deal and is at the crux of the matter as to why the Microsoft stack is so badly flawed).
-- Roger Voss, August 3, 2006
What I would like to know is this: Is there any J2EE application that cannot be developed on the .Net platform and vice versa, in any major business area? If not please stop this nonsense. I really don't think that it matters to the end-user which platform is used to develop an application. What matters to the end-user is whether a business application does what it is supposed to do in an acceptable amount time (a few fractions of seconds don't really matter to the end-user). In my modest view, if both platforms can get the job done, what matters the most is the level of comfort/experience of the development team with each platform. Plus a lot of you seem to forget that many applications don't need the full feature set offered by these platforms. Classic asp, php, or plain old cgi can get the job done in many cases, so stop the fighting, and letﾒs focused on how to coexist in peace, love and mutual respect. If you love your Benz, and she loves her BMW and you both get what you want and need in your cars, whatﾒs the fussing for?
-- DOUTY OULARE, September 5, 2006
"A true J2EE system would involve EJB and container-managed persistence. All of that automatically generated SQL code from the application server can be 100X slower than hand-authored SQL, which means MIT would have to buy 100 times as much computing hardware to support the same application."
what the fuck does ejb and container-managed persistence have to do with fucking generated SQL code? Those two things are not even close to being related you dumbass. You also imply that you can't "hand-author" sql code in java.. which is just down ignorant and incorrect. I also know that MIT (not being retards) consider the cost of maintenance on an application and wouldn't write pure embedded sql statements that would drive up maintenance cost. I thinl the plain and simple answer to this question is that Microsoft has a much more developer friendly environment for writing web based applications. This drives down development cost and saves them money.. it is also much more maintainable. That was the weakest answer I've ever seen. 100x slower doesn't mean a 100x more hardware.. would they have to buy double the servers to get the same performance? NO! LOL! Anyone can post on the internet on shit they know nothing about.. I can't even read the other post because that first post just pissed me off so much.. I'm sure someone else had more intellegent answers but I can't bring myself to read them.
-- yomom yomom, September 11, 2006
its user friendly to compare j2ee
-- Prabu L, October 10, 2006
I am only a student and am not professional like u people. I am currently stydying .NET as well as J2EE. I recently had to create a mini website as a project. It's clear that from student point of view ASP.NET application is easier to code, deploy & debug (with visual studio). So it's no wonder MIT choosed ASP.NET over J2EE. I finished ASP.NET app (discussed above) in stright 12 hours (It was my first .NET Application). I tried to implement same using J2EE. Now it took me several hours to download & decide tools (Netbeans, JBoss, Eclipse, struts etc.) I decided to go for JBoss - Netbeans combo (It was my first J2EE Application). It took me more than a week and more than 30 hrs of coding / Deploying / Setting server. So the moral of the story is not whether J2EE / .NET is better than the other. The point is .NET is more suitable and easier for students to start and code with. So at acadamic level ASP.NET could be choice for many universities.
-- Nikhil Rodrigues, October 20, 2006
Sorry about a mistake in above reply. The website mensioned was not my first .NET Application. It was my first ASP.NET (Web) Application.
-- Nikhil Rodrigues, October 28, 2006
Hi there. I'm a university graduate and have learned different platforms like the ones stated here. On the first year of my study, java was the mouth of the crowd. My classmates and I often argued about which technology suited best... so along with the years of learning... We ended up with .Net technology. It's not for the reason that J2EE is less powerful over .Net and the turn around logic, but .Net embodies an easier platform to develop and deploy... Just like what others are saying, companies or end-users dont care on what technology to use... It is how their business will work in accordance and "harmonial" manner... and of course how they profit from it. Today's computing environment requires fast-phase development rather than how technology works. And again, today's computing world must be fast, robust yet simple. Productive and powerful. Overall, .Net is a good choice for me, and my clients needs. Eitherway, it's a matter of choice... but again, as they say.... DONT BE LEFT BEHIND...
-- Erwin Alejandro Florentino, November 20, 2006
.Net is really superior than java, what most people are telling .net is copied from java, this is not the way of speaking, they may be adopted the combined features, but Sun COpied VS 2005 features in Netbeans 5.5, they didn't have toolbox in their IDE first, they really copied from Microsoft, whoever telling java is secured than .net are mad people, they don't know about visaul source safe, Microsoft.net technology is like "sea" in the application world, j2ee is like a "well" in a application world, even Sun Copied OOP from Borland C++, working in Java is like travelling 10 Kms by walk, but working in .net is like going the same distance in bike at 100 KM/sec,if we test the performance then .net really dominates java, I hate to work on java, because it is much difficult to execute, and running a simple application itself takes around 5 minutes, what we can do it in a .net within 20 seconds, Microsoft provided the vehicle in the world of programming, the biggest drawback in Netbeans 5.5, if we make mistakes in code section of the website which is not related to design section, then we will get errors in Design pages, they didn't copy correctly from Microsoft, Java creates the illusion that is superior than .net, but in reallity it is not superior, it is too much complicated and less in quality compare to .net, java libraries look like built by high shool childrens, but Microsoft .dll 's are not like so, No one copy them whoever tells .net is copied from java, I have one assignment for them, I will give 5 years time, till than they have to modify .dll files in vs 2005 and add some features to it, if this is not possible, then keep quite, Sun is a copycat of Microsoft, this is such a shame for SUN, Many companies come to conclusion that .net is good in performance than j2ee
-- sandeep m s, November 29, 2006
It is not important why or where or from one thing is or was copied from. Everything on earth are things but just copied... The most important thing is "how one provides". Every programming langauage or any model of those were made and based from a model. Given that they copied one thing from the other, it doesn't matter. What's vital is, "how effective" they are - and will be. Say if A copied a "thing" from B and B is all about but crap, they laugh and ignore B. BUT if M copied from S, and M becomes so successfulll... they throw garbage and stones to M... because M now is more superior. OR A VICE VERSA OF M AND S. lol.
Security features are merely flavors. Speaking about this matter, it is how one design and implement the "term" called "security".
-- Erwin Alejandro Florentino, December 2, 2006
I've been learning Java for years, but still can't get hold of the feeling to use it. However, starts from VBA, then ASP and at last ASP.NET 2.0 for my PhD project, I have no problem using it and implementing what I need. That's just my little opinion, as a novice, although I don't want MS to dominant the market neither. But as someone said above, the end user only cares what functions your application has, not what you used to implement it.
-- Eddie Chi, December 4, 2006
After several years of working with and learning Java and J2EE/JEE, I have concluded that JEE is powerful and if you have the time and energy, then it can do what you want, but as stated earlier the major advantage and disadvantage to JEE is choice. At my job we wanted to implement web services, we have a huge investiment in WebSphere and decided to go with an IBM solution after months of researching different solutions stacks, open source technologies and platforms we still could not find a conclusive winner. I honestly don't care alot of the time what's going on under the hood. Like most professional developers, I have deadlines and work for people who want solutions in a hurry. The last thing I want to do is evaluate JEE framework A vs. JEE framework B, Hibernate vs. iBatis, etc.
Though I love the concepts and philosophy behind Java, I find it a major pain to work with as a web solution. Also, I have found many JEE websites to be slow and cumbersome. I'm not saying all JEE websites suffer from this, but alot of the one's I have seen and have heard about are.
My 2 cents,
-- James White, December 18, 2006
leavel all aspects what about tool,mobile development. .net provides a lot of tool and resources.
c# is a iso standard but not java. ECMA has standardised the product.
only if develop using stanadard tchnology your product will be of good standard.
.net can run on linux too using a plugin call grasshopper including the vs ide.
so the best is dotnet and sun has to set down.
-- kesavan sathupadi, December 30, 2006
I've done quite some research om comparing J2EE and .NET, here is a good document that maybe good to discuss about the content of it used in comparing J2EE and .NET. Some of the contents maybe out of date since it is a 2001 document, so if you will, please comment on things that's been updated or improved, which may help is the overall analysis of the two platforms :D (Reference - www.objectwatch.com/FinalJ2EeandDotNet.doc)
Differences between J2EE and the .NET Platform
You can see that there is tremendous overlap between the J2EE and .NET platform technologies. How, then, does one choose between them? In this section I will discuss what I see as the main differences.
Many companies buy into J2EE believing that it will give them vendor neutrality. And, in fact, this is a stated goal of Sun's vision: A wide variety of J2EE product configurations and implementations, all of which meet the requirements of this specification, are possible. A portable J2EE application will function correctly when successfully deployed in any of these products.
In fact, few non-Sun J2EE proponents believe this is achievable. One of the most prominent independent J2EE spokespersons is Paul Harmon, a principal consultant for the Cutter Consortium and the writer of the widely read Architecture/e-Business E-Mail Advisory. While Harmon is usually very pro-J2EE, he recently wrote this unusually frank assessment of J2EE vendor portability:
Has the EJB model reached the point where I can move EJB components from one EJB application server to another? Not in most cases. The EJB specification isn't comprehensive enough. EJB application server vendors have "filled in" by providing proprietary solutions to complete the model and to guarantee that their clients can build production systems.
Harmon summarizes the vendor neutrality situation today, as do many, with this assessment:
The reality, at the moment, is that if you want to develop an EJB application, you should stick with a single vendor.
The reality today is that there is no such thing as vendor neutrality. Of course, the .NET platform is not vendor neutral, it is tied to the Microsoft operating systems. But neither are any of the J2EE implementations. The best advice I can give is to choose some vendor, plan on staying with that vendor, and leverage the heck out of the platform that vendor provides.
The first of the J2EE specifications, the EJB specification, came out in 1998, and the first beta versions in 1999. This was three years after the first implementation of the equivalent .NET platform technologies, MTS, the forerunner of COM+. I discussed the evolution from MTS to COM+ to the .NET platform in a recent article . Given that the .NET platform has a three year lead over J2EE, it should be no surprise to learn that the .NET platform is far more mature than the J2EE platform. Whereas we have high volume highly reliable web sites using .NET technologies (NASDAQ and Dell being among many examples), we have none that I am know of that use a J2EE platform. Again, Paul Harmon:
Any company attempting a [J2EE based] company-wide, enterprise system today is working on a cutting-edge effort and better have a team of really good developers to help it over the rough spots. More important, it should probably reconsider a comprehensive project and settle for an initial approximation.
Interoperability and Web Services
The .NET platform eCollaboration model is, as I have discussed at length, based on the UDDI and SOAP standards. These standards are widely supported by more than 100 companies. Microsoft, along with IBM and Ariba, are the leaders in this area. Sun is a member of the UDDI consortium and recognizes the importance of the UDDI standards. In a recent press release, Sun's George Paolini, Vice President for the Java Community Development, says:
"Sun has always worked to help establish and support open, standards-based technologies that facilitate the growth of network-based applications, and we see UDDI as an important project to establish a registry framework for business-to-business e-commerce.
But while Sun publicly says it believes in the UDDI standards, in reality, Sun has done nothing whatsoever to incorporate any of the UDDI standards into J2EE. This includes the most basic of the UDDI standards, SOAP, that has been around for more than a year. As IBM's Rod Smith, Vice President of Emerging Technologies, and one of Sun's strongest J2EE partners, recently said:
So far, Sun hasn't said too much about [UDDI] Web Services. And I think there are reasons for that. I think that they're looking at Java. When we look at Web Services, we're listening to customers and the requirements that they're doing, and the fact is, customers have existing systems which are not Java-based, as well as Java applications. So Sun has been still shepherding Java but has been very quiet on this subject.
In fact, Smith's analysis of Sun's interoperability strategy is right on target. Sun has primarily focused on interoperability between J2EE vendors and, to a limited extent, with CORBA vendors. Sun's idea of interoperability is that it should be based on the communications protocol called IIOP.
There are three major flaws with IIOP based interoperability.
First, it requires the whole world to be running J2EE or CORBA, an assumption that even Sun's J2EE partners reject. IBM's Rod Smith explained why IBM is supporting SOAP rather than IIOP as the open standard for interoperability:
When the announcement came out and we said we [IBM] were going to promote SOAP as an open standard and bring it forward accordingly, the response was unbelievable and positive because people want to do this type of integration. They have Microsoft-based solutions. They also have Java-based solutions. They have [Windows] NT-based solutions and they have Linux-based solutions.
The second flaw is that IIOP, like all proprietary communications protocols, is not amenable to transport over the Internet. This makes it impossible to serve as a widespread mechanism for eCollaboration.
The third flaw is that even if the whole world agreed to use both IIOP and J2EE, the current specification of IIOP is inadequate to ensure interoperability even among the J2EE vendors. As Paul Harmon says: Are EJB application servers from different vendors standardized in such a way that they can be snapped together in larger systems? In spite of the use of Internet InterORB Protocol (IIOP) to support inter-EJB application communication, one can't casually plan to link multiple EJB products in a network.. getting two EJB application servers that each rely on several nonstandard utilities to communicate smoothly takes some serious programming.
The reality today is that the .NET platform has a much stronger technology neutral eCollaboration strategy that does J2EE. IBM is so convinced that UDDI, rather than IIOP, is the correct approach to interoperability that it has broken with Sun over this issue. At this point, it is painfully obvious that IIOP, despite its ten year head start over UDDI, has been a complete failure.
We have two competing visions for eCommerce architectures. Sun's J2EE vision is based on a family of specifications that can be implemented by many vendors. It is open in the sense that any company can license and implement the technology, but closed in the sense that it is controlled by a single vendor, and a self contained architectural island with very limited ability to interact outside of itself.
One of J2EE's major disadvantages is that the choice of the platform dictates the use of a single programming language, and a programming language that is not well suited for most businesses.
One of J2EE's major advantages is that most of the J2EE vendors do offer operating system portability.
Microsoft's .NET platform vision is a family of products rather than specifications, with specifications used primarily to define points of interoperability. The major disadvantage of this approach is that if is limited to the Windows platform, so applications written for the .NET platform can only be run on .NET platforms. Their are several important advantages to the .NET platform:
?The cost of developing applications is much lower, since standard business languages can be used and device independent presentation tier logic can be written.
?The cost of running applications is much lower, since commodity hardware platforms (at 1/5 the cost of their Unix counterparts) can be used.
?The ability to scale up is much greater, with the proved ability to support at least ten times the number of clients any J2EE platform has shown itself able to support.
?Interoperability is much stronger, with industry standard eCollaboration built into the platform.
The single most important differentiating characteristic between these two platforms is overall system profitability. Companies seeking a low cost eCommerce platform would be negligent to ignore the Microsoft offering. eCommerce has always required high reliability and excellent scalability. For the first time, these functionalities are available at on a commodity hardware platform for a fraction of the cost of Unix based solutions.
-- RMS C, December 31, 2006
Debating Java vs. .Net is like debating Chinese vs. English.
-- Joe Riddler, January 20, 2007
A long-lasting and quite informative thread, I must say.
I have just moved to Java EE, after three years of ASP.NET and Visual Studio. So, in a year or so, when I will have a much more valid opinion on the pros and cons of each platform, I will get back to this thread (I assume that it will keep existing as long as this platform war exists :) ) and give you "my two cents".
-- Fanis NG Athens Greece, January 21, 2007
I read through the thread of discussions and noticed one thing, J2EE and Java developers seem like very angry people. The contest appears to be over. Microsoft won, and it turns out Bill Gates wasn�t evil after all. He seems like a good guy based on what he is currently doing with his wealth. I doubt if Sun will even be in business 10 years from now (based on their financial statements over the past few years). But I guess it is normal for the losing side to cry foul the most.
As for me, I need to get back to work. I love coming into a company that used to be unix based. The developers are so proud but always behind schedule. I come in, install Toad and Visual Studio .Net, gather requirements, create a very easy to maintain and enhance asp.net web app with Oracle on the backend and I�m done. Onto the next project. I end up looking like a miracle worker.
-- David Louis, February 15, 2007
This is a very interesting discussion. In reading through some of the posts, I couldn't help but notice a common theme--most of the .NET complaints are related to the VS IDE, not the framework itself. The two are separable. You can write .NET in a text editor and compile from the command line.
A few people noted that the VS IDE encourages bad programming. I'd put that another way: it makes programming simple web applications accessible to the anyone. From a business perspective, optimization isn't a major goal with smaller applications.
There's a lot of snobbery in the development world. Why shouldn't a novice be able to solve problems the same way we do?
-- Paul Stewart, March 20, 2007
As some have already pointed out, I too am amazed at how long this thread has gone on. Kudos to everyone for the diverse points of view!
While a good portion fo the viewpoints here have come from the programming side, (and I must have read well over 75% of the responses!), I'm here to offer one from the senior management side (so please be gentle!)
I'm no slouch to the programming side. I'll date myself by stating I was programming .cgi with Perl back 16+ years ago or so. To date though I run the IT operation for a $800Million/yr company, I still like to code on my own just for enjoyment (or more stress depending on how you look at it).
Now.. we recently transitioned over to a new ERP system using iSeries 400. We had a mix of unix and Win 2003 servers and apps (i.e., JBoss/Tomcat IIS/SQL Server). I wanted to begin consolidating programming resources and reel in all the outsourcing we were paying to maintain all these systems that predated me over the years. I obviously had to look at making a decision for our future direction and growth. Certainly my options were wide open - 400/Websphere? Unix/Apache Win2003/.Net? DB2/SQL Server? etc. etc.. I had to make a decision on converting applications or keeping them as-is in addition to what we were going to develop new ones in. When you are dealing with a multi-million dollar budget, people's jobs and the future of a company you are willing to listen to every point of view imagineable to help you make the right decisions. And for every so-called expert I talked to, there was a different view and I still found myself with a big dark cloud in front of me as far as what direction to take.
Ultimately for me it came down to several factors:
Conversion time (more important than cost). Conversion cost. New Development time/cost. New cost of hardware and software tools. Cost of salaries and the number of personnel.
Without going into the entire strategy, I ultimately decided Microsoft and the .Net environment for our future direction. Why? Certainly the cost of licensing is more expensive, however, when I acid tested the development of two VERY SIMILAR programming projects to reputable firms the .Net timeline and development cost was faster and less costly (again, without getting into the dirty specifics). In addition, for some of us execs, the future of companies and products does make a big difference. Cost aside, Microsoft makes us execs a little warm and fuzzy because we have confidence in the company's future and in their ongoing products and support. While I can certainly understand the grass roots against Msoft, I respectfully submit from a BUSINESS point of view when you are going to place the future of a company, millions of dollars and people's jobs and families on the line, I think most would really look at the stability and future of a company and its products at the forefront and investing in a Msoft solution is/was in my opinion a better long term option than the open source or convoluted J2EE route.
I strongly believe that neither is a poor decision, but I had to make the decision that I could sleep with at night considering the people that depend on the Sr management to make the right choices for our company.
It's all perspective... one can look at things from a programming side or from a management side and you can see where we all see things little diffrently.
Thank you for the great thread and the wonderful points of view. It certainly compelled me to take the time and post my own hoping it can lend some constructive food for thought.
-- A. Cesar, April 14, 2007
One thing is for sure: The J2EE IDE's are complete garbage in comparison with Microsoft Visual Studio! I tried the Netbeans IDE, which crashed my Athlon 4000+ machine, and tried MyEclipse 5.5 - a so called release "ready for production" - which I just deleted from my machine because the code editor was broke.
If you want developer comfort, stay away from J2EE.
-- Loes Martens, April 17, 2007
Great thread! It's very relevant for me as I'm about to break ground on a new project and can make a fresh choice between the architectures (I have experience with both, more recently in the Java/J2EE world). I have a number of parameters that will influence my choice, but data points that would be very helpful to me would be knowing what choices other companies made. A client list if you will.
Since my project is developing a "Software as a Service" product over the web that will include a very rich user experience, I'd love to know what technology-stack choices particular companies have made, such as SalesForce.com or even Google (gotta be a bunch of Linux, C, and Java). Does anyone have this kind-of information that they can share? Thanks.
-- R Ullrich, May 7, 2007
If you read the whole thread there were some supporters of J2EE/Java evident with some commentary that was interesting. Something that is apparent is that people let the emotional part of their brain take over where they hate Microsoft and Gates and that is their main driving force...like fighting the Empire (Probably saw to many star wars movies). In the real world you need to make decisions based on what you are trying the achieve. It might be nice to drive an electric car because it is "Green" but if does not work well, you won't be able to get to where you are going. Getting there is the main thing and Visual Studio gets you there in a fairly reliable, fast to market. low cost way. I don't care about interoperability. We run one type of server platform that serves the application to the user. It is fully deployed on one type of Windows server system that is used all over the world and supported by 95% of the marketplace. You can cry all you like about Microsoft. The truth is it must work, low cost, fast and deployable. Easy to learn and implement. Well structured and supported by billion dollar development. I have seen how incredibly difficult to develop a fully featured J2EE application that WORKS. IBM and Websphere created a catastrophic cost and failure for our company. While we were creating competing applications in .NET and blowing the users away. Believe me, EVERY company care about cost of development and speed to market. This is not an academic exercise. This is real world. It used to be that if you went with IBM you would never lose. There has been and paradigm shift. Go with Microsoft, same should be true. Do you remember IBM Warp...gone! Open source is an acronym for an anarchy. All those greens can choose anarchy, I like to be successful.
-- mitch B, May 25, 2007
-- Animesh Saxena, June 13, 2007
Why choose either. I have been using a tool for years that targets a platform and creates a code generator for it. They have just release a C# server generator. With support for asp.net being provided by a 3rd party soon.
Yes you get the usual generator arguements but as hardware is cheaper than you or I, surely a bit of extra spend on hardware and comms is OK for a dual .NET/J2EE environment.
I know people will say that most shops are one or other. This is not so true for ISV (Independent Software Vendors) who have an idea but need to target multiple platforms.
Other than deployment, I have little need to understand the underlying complexities of the code being produced.
CA Plex (formerly Allfusion Plex)
-- lee dare, June 15, 2007
Animesh Saxena, you better know what you're talking about. Itﾒs obvious that you have no frikin' idea what asp.net is.
Man, you have really mixed things up, if you have something valuable to contribute, please do, otherwise keep listening..
- Asp.net doesn't eliminate the client side code!
- Not every button causes a post back!
- If you don't like validating on the server side then for God's sake don't do it, asp.net gives you the two options.
- All what you said about code lines in .net and other languages is just bullshit, tell me then why the hell c sharp is approved as a standard by ECMA and ISO and why the hell ASP.NET 2.0 produces markup that passes W3C validation.
- What you said about runat='server' is also BS, because all what you write in the aspx file by default runs at client side unless you specify the runat attribute which generates a property for that control in the code behind class to make it accessible in a strongly typed way and to maintain it's value between postbacks automatically using ViewState (I bet you have never heard about it).
- This is the funniest part:ﾔ Why does it have to have a font, background and all these other useless properties that bloat the object" LOL, it seems you have used the autoformat ((OPTION)) to automatically style your control... but still you want it to be colored without styles attributes??!
-- E. Salamin, June 16, 2007
I prefer Linux, Java and other open soft, but there is a problem. When you work with this solutions your skills grow up, you have a satisfaction, you fill like a hacker, but you don't have free time for anything else ; ) Companies often prefer 'fast food' solutions, they agree to pay tribute for using easy tools from MS, and live in peace. Now Im learning ASP.NET, for fun and profit, leaving J2EE technologies.
-- besdman besdman, October 1, 2007
When talking about performance, both platforms can't compete with C++. The reason we have virtual machine is to make life easier for programmer. But J2ee just over-complicated and can't meet its promise, that is why we have technologies as Spring and Hibenate. Also, to compare performance, none of discussions mentions java VM and CLR. At least from my experience, ease of development gives me more time to fine-tune performance.
-- bin Zhao, October 16, 2007
You wrote: The J2EE zealots seem to think that a two-tier straightforward and understandable JSP site is not "true J2EE". programmers need to work on the problems, not worry about the tools.
In case of JAVA, there are a lot of tools and frameworks. When people however feel that everything needs to be die-hard JAVA with at least 5 tiers, it is them who are wrong, not JAVA or its tools. In every book I've learnt so far it is explicitely stated that you need to analyse your problem carefully and depending on what you need, you use the rechnology best suited for you. If that means you end up with a simple 2-tier system, there's nothing wrong here. Flexibility comes with a cost, one of carefull consideration but total freedom. .NET comes with just .NET. Simple, but rather limited.
Your next statement: If I were paying a group of programmers, I'd want them solving my users' problems, not evaluating different "operating systems, development environments, databases, web servers, servlet engines, and application servers"
What you say is in fact a reason why to use J2EE and not .NET: - not evaluating different OS: With JAVA, you don't need to worry about this. JAVA does. With .NET, you don't need to worry either. Just make sure you have a Windows server on PC hardware. It doesn't or barely runs on anything else...
- development environments: J2EE has strived to full modularity and openness. This has of course a downside in that you'll have as many interfaces as you'll have modules being a database, container etc. But you'll know you can integrate e.g. a sybase DB with no matter which AppServer. .NET is microsoft. You'll be sure their stuff will work with ... microsoft. I wouldn't want to pay every developer who wasted 2 days in trying to figure out why his application doesn't connect to anything else but SQL server.
-web servers: Tomcat and Apache are the most commonly used web-servers/containers on the net. Integration with JAVA and JAVA frameworks is very tight given the fact they both grow out of the open-source community. With .NET, you'll end up with microsoft releasing new stuff. There will certainly be a delay before the open-source community has decided to support any new .NET features so you'll always be left catching up with the rest. That' aint too competitive I feel. Of course you can stick with IIS. But as a company, will you pay for IIS? Or will you use the free and robust Apache/Tomcat solution? As a vendor, will you force your client to buy IIS? Platform dependency and vendor locks aren't well appreciated anymore in the commercial world!
You do have a point about the different J2EE application servers which are not at all compatible with one another. Of course, this is both an advantage as a disadvantage ; You have a choice in selecting the one that you feel suits your needs best. With .NET you'll have only one, like it or not, it'll have to do. Of course, the different J2EE appservers make it you'll have to rework if ever you want to port. But that doesn't always need to be hard.
You also said this: The end user can perceive only data model and page flow. I would want all of my programmers' energy focussed on these challenges and not on the tools.
You make it sound as if your developers don't need to learn the .NET platform and its tools. It is my opinion that after the long microsoft history, you have forgotten some serious MS screw-ups. Take VB for example. You'll have windows with buttons, tree views etc in just a few minutes. Now try that with C++ or even JAVA, right? But I'll spare you the trouble and hours I've wasted in the past coping with problems that could be solved with the DoEvents call. A call they had to build in after having discovered a serious design flow in the VB vs. windows messaging system which sometimes caused events to be screwed up. And now you want to build on technology with that stuff in its kernel?? You can't be serious! Another thing. There are many browsers out there. IE is the only one that has so many CSS bugs that it really screws up lay-out visibly. It has the most security leaks too. That doesn't really give confidence.
You say that your students set up the .NET environment in a few hours while their J2EE counterparts wasted a few weeks and skipped classes. This is the same like saying "it took my wife 5 minutes to drive my car to the mall while my aunt who took the space shuttle wasted 2 hours trying to start the engines." A .NET platform offers a certain functionality which comes nicely in a package. You flip the ignition and it runs. It will take you to the mall nice and easy. However, going to the moon is somewhat more complicated and requires different technology. The J2EE world is a one of bricks. It is up to you to choose the bricks you need to build your solid base. The learning curve is surely harder. The configurational aspects are pretty complex. But you can solve the most critical questions your customers ask you, today. And above all, it can sometimes be as easy as downloading a package and plug-it in without even having to restart the AppServer or without having to write 1 character of code. Chances are someone else already did it for you. The support community is also a lot bigger that the .NET. You'll get help more easily, more rapidly.
You said: I noted that J2EE did not seem viable for the long run due to the plethora of incompatible systems.
Microsoft solved that quite conveniently by securing "the system" in that of their own. And so you're stuck with the resourcefullness of a few against that of the many. But I'm afraid the present has proved you wrong. In europe, 75 to 85% of the web technology used is J2EE and not .NET.
You said: The idea that every programmer in a large organization will want to use the same computer language seems fanciful.... I don't know how about it in the states but in companies I've been working with, they do tell you more and more what the company standards are and they expect you to follow them. 10 years ago it did happen indeed that in a team, you saw C, C++, some VB etc. Those days are definetely over in here and for a reason: It offers integration issues, it offers maintenance issues let alone you need people with understanding of every language used and that can be hard to get unless you pay them a lot. JAVA seems to be the silver bullet. It can accomplish everything. Why would you need anything else? Okay, now speed IS a bit issue. Let alone memory. .NET isn't any better at that, is it?
So you said: The Microsoft tools (IIS, Active Server Pages, .NET runtime) aren't tied to any particular computer language and recognize that an organization will have a diversity of programmers and therefore a diversity of programming languages.
Excuse me but this is really absurd to my opinion. Companies start with a business model. Depending on that model they need to offer products. The technology used to build these is in function of that business model, not in function of what their employees like work with. Will Boeing start building planes using wood because workfloor personnel prefers cutting trees with a jig-saw? Every healthy company has understood that uniformity leads to better maintenance. By allowing a technology with a dozen different languages solely for the pleasure of the developer and not for the sake of each language allowing something that can't be done with the other, clearly violates the maintenance rules. This has lead to .NET projects who are: - not finished in time - not finished within the budget - very hard to maintain - very expensive to maintain - very hard to implement in a heterogenous environment.
.NET is maybe the right choice for smaller organizations who only have a dozen PCs but in heavy telecom industries where a lot of different technologies are used, no-one dares installing a Windows PC in the core network. You see them always isolated somewhere behind a few firewalls. That's the sad truth.
You wrote: Java is the world standard computer language except that you can't really use it to develop an application for computers running Microsoft Windows.
You probably forgot that a JVM does exist for windows... And despite the fact that windows is today, by far still the most popular OS, Apple with OSX is selling 3 times more computers than the industry's average which means they're catching up. My guess is that unless MS really invents something marvellous, stable and secure, they will continue to loose market share untill they're no longer the market leader. It's not a question of "if" but of "when".
You also seem to have a laugh with CORBA and the need to interface to other languages. I have the impression that you can be quite ignorant towards company needs. Unfortunately, there are still legacy systems on the market. Having CORBA allows these companies to use these legacy systems even longer which saves them a lot of money. On the other hand, CORBA allows complete integration freedom in between multiple vendors. In the TELECOM this is surely an advantage. You get an IDL file and you generate interface classes for whichever language you want to use. You don't care about the server-end implementation or data type issues. I wouldn't want to start laughing with it that easily.
I know I'll try to avoid MS producte no matter how easy they make it look like. I've learnt my lessons well. The initial and obvious things seem to go well. But once you try to do very specific things you're screwed anyway. With JAVA I can make a web tier, a GUI tier, a business-logic tier and if tomorrow I decide to hook-up another DB, I don't need to write code. I can sell it to multiple companies regardless of their hardware. If they alreay have a Mac? It will run. They have a SUN? IT will work. I won't need to tell them to purchase a windows PC, IIS etc...
Kind regards Lorenzo
-- Lorenzo Schoovaerts, October 23, 2007
The true answer, after all these years, is ColdFusion 8, which performance wise is blazing fast, which of course is a database tool and language that leverages J2EE. This thread mostly ignores ColdFusion but in my opinion it makes Microsoft's environment and licensing and complex code structure totally obsolete.
The only reason to go with .NET in the past was perhaps performance, but now that advantage too goes far and away to ColdFusion 8 leveraging J2EE.
-- Michael Schacker, October 26, 2007
Now many years past after this question was created. Nowadays IT world is centering toward Linux. Therefore definitely it seems that J2EE is going to win the race because of its flexibility. But hold, Microsoft is alive. Microsoft definitely has a power to beat Sun Microsystem. Microsoft .Net is really an amazing work done. (Hats off to Microsoft !!) Once if .Net becomes platform independent supporting Linux, then Microsoft will become real headache for SUN Microsystem. And if (not possible) Microsoft's Technologies becomes open source wares, then it's sure that SUN Microsystem will vanish in future.
-- Nitesh Sawant, January 25, 2008
.NET and J2EE are both good. Its just a choice to make. In the end, its how the programmer handles the code that makes the difference. Java related stuff may have a higher learning curve than .NET, but it would eventually be easier for a programmer to migrate to C# just in case, and not the other way around.
Its not only Sun that drives Java. There are already a lot of companies like Oracle and IBM that support it. SAP also provides support for Java along with ABAP. So the war is not yet over with Microsoft. In fact it would be great if both technologies synergize and combine the best of features. But thats not likely going to happen.
-- Sundeep Nanua, April 12, 2008
I am not religious about technologies,but greatest thing i found about micrsoft is that they fight well against almost 18 big software gaints.True java is strong language but we can't ignore Micrsoft .Net Plateform including sharepoint which i believe no other company can develop. Anyways let we see who will win,but my experience says Micrsoft will win. Regards
-- shabir Hakim, February 11, 2009
Hi Lorenzo Schoovaerts! Have you worked on .NET ever? I bet you wouldn't have. I have and I go with .NET. Even Sun had some serious screw-ups like EJB. Even JSF doesn't look good. It is still trying to catch up with ASP.Net model of event handling but with lot of issues still to be fixed. What ever you have commented about J2EE might be right but not with .NET just because you haven't worked on that technology. Look for the comments from the people who have worked on both the technologies. You will clearly see that they go with .NET. Do you have a response? And I would like to see more comments from the people who have worked on both the technologies.
-- AKASH PB, June 4, 2009
I have worked on both languages and platform Java and .Net with Java first for 7 years (since JDK 1.1.3) and .Net second for 3 years. Because I changed my job and the new company are using .Net, so I have no choice to look at .Net. IMHO .Net C# is simply a copy cat of Java, it was first disgusting to code on it, no kidding. Actually I should say the language is not important, the more important thing is the architecture. Java runs on most hardware where .Net runs on Windows only at the moment. Java is simply a winner on flexibility. Well now you will say .Net can be programmed in many languages you want, C#, C++, VB�etc. The only reason you still using VB is you need to maintain an old system, syntax wise is not capable of handling OO programming well. C++ you would use it for optimization but Java does give you optimization code at run time, and in some cases, it outperforms C++/C with JVM tuning. .Net To support multi- language is like someone doesn�t know Kung Fu and swing his sword like crazy and Java and only one language is like the one knows real Kung Fu and finish the other guy swinging his sword like crazy in one punch. I am not sure if I analogy well, just give you an idea of what the difference would be. MS products is great for small and simple project but not for hard core project. It�s like drugs, first time you taste it and taste very well, but later you know you are trapped. You need to call their support and pay them real bucks for critical problems where only they can fix it and it takes to wait for the patch where Java is open source and huge support in the community. Another annoying with the VS IDE is you hardly can package you project in a reusable manner. Imagine you have to create one dll per package in Java. You don�t have the freedom to bundle your components like in Java. In order to create reusable and decoupling component, you have to create way too many projects in MS IDE. So if you need to work on hard core project and need maintainability, flexibility and extensibility, cost effective, securable, more third parties (open source) go Java way for sure. IMO, JMS is one of the hard core component in J2EE, it provides lots of advantages to integrate with other legacy systems. I used it to integrate with a legacy system written in C and uses C-Tree as storage to provide a �REAL TIME� cross system update using JMS and JNI. Both system runs at the same time where clients using the old system was smoothly transit to the new system without any problem. And the new system I used Spring Framework for Java for the backend and Eclipse Rich Client Platform launching from the internet using Java Web Start for the frontend. Just my 2 cents.
-- Raymond Tsang, June 9, 2009
I've used both Java and .NET for 4 years. Most of my time was spent writing Java applications. My conclusion is that .NET is easier to deploy, develop and maintain.
I love the XCopy way of deploying an ASP.NET application and I never have to shutdown and restart IIS. With Weblogic, I either need to "clean" my project (Eclipse) or restart my weblogic server. It's just a lot of wasted time in development.
-- Shaohen Yong, July 16, 2009
I haven't worked much either on .Net or J2ee. But am in a process to choose the best technology which will of benificial to me in architecture point of view in future.
Even though things seem very simpler in .Net, I feel there is a lot of spoon feeding in .Net.
With respect to architecture and designing, there seems to be lot to learn in j2ee as I really liked the concept of beans. Beans provides us the feauture to have the event handling in a seperate reusable component Where as in .Net, the framework does all the event handling and gives us the event.
So to learn designing and architecture, Java seems to be much better off compared to .Net
Correct me if am wrong.
-- santosh shetty, November 2, 2009
Raymond Tsang, your 3 years with .net had no effect.
"Another annoying with the VS IDE is you hardly can package you project in a reusable manner. Imagine you have to create one dll per package in Java"
Have you ever heard about Global Assembly Cache? That's so basic!
-- Eduardo Castro, January 19, 2010
Java: multiplatform (not always. Advantage?)
.Net: Windows or Linux using mono.
Java: hard to deploy
.Net: easy to deploy
Java: too much time to develop
.Net: fast development
Java: free license
Java: expensive development
.Net: cheap development
Java: community can help you
.Net: community can help you as well
.Net: safe as well
... and to finish:
C#: events, delegates, operator overloading, conversion operators, properties, string switch, lambda expressions, linq, yield, boxing/unboxing, variable argument list, internal access modifier
-- Eduardo Castro, January 19, 2010
I started with .NET in 2001 when it was BETA, converting from classic ASP. Love ASP.NET + C#! Because of work, I've switched to JAVA. I was really disappointed in the crap I have to go through to build web apps. Struts was really popular, then, dum di dum dum... time goes on and then Spring and such. All of these require so much configuration/XML to get started. No real component based frameworks like ASP.NET. Then there's EJBs(pre 3.0). I wondered why everything was so complicated compared to .NET. Anyways, a decade later, Now there's SEAM, JSF 2.0, EJB3... JEE It has finally caught up to what .NET provided me almost a decade ago. So now I wonder, if JAVA went from utter crap to something enjoyable in 8 years, how far has .NET which I loved, improved? I'm getting tired, could someone just give me a fast forward view of .NET's progress in the last 8 years. Really curious but too tired to go digging like when I was young
-- nepoez yu, January 29, 2010
I am on the verge of selecting J2EE or .NET as my study option in college ....any advice will be appreciated.
-- Sandip Gupta, February 3, 2010
I would like to suggest J2EE rather than ASP.NET because , you can't get freedom from getting the application server of your choice. But it's with J2EE , and we can get many application servers such as WebLogic , Apache tomcat , Jboss , Apache Geronimo , etc. But in ASP.NET we just have IIS Server. Its really complicated to configure IIS server by it's UI program rather from the J2EE application server (as their configuration files are xml based). J2EE has a big advantage of Single Threading Model i.e. the application performs on threads rather than from Process (as it was in CGI). This helps in getting a lot of request with a single instance of the servlets. I even know it's time consuming about the development but you also getting some great features and also a security based model , which can't be breached easily. Even ASP.NET won't have such great features , they just being designed to make it user friendly rather than based on security.
-- Rupesh Saxena, February 28, 2010
Java used to be the cutting edge language 15 years ago, but has hardly evolved, for example, after all these years, you still can't do the most basic things like a "switch" on a string.
Also, J2EE still doesn't have a viable alternative for ASP.NET Webforms, while ASP.NET MVC, now in its second edition, rivals J2EE MVC frameworks like Struts and Spring MVC.
The only reason I can think of to still use J2EE is the best interoperability in the industry.
-- Tim Stassen, April 11, 2010
My simple answer to the key question of this thread is a question of �right-sizing� (not in lay-off context :). Take a non-dev example � Product Data Management. When I worked for a huge semiconductor company we had thousands of CAD files, Bills of Materials, and other electronic documents. Security was an issue for a large % of our documents. The solution required a $2M PDM system and encrypted vault to meet our needs. We also had Manufacturing Execution Systems, Enterprise Information Systems, Transportation Management Systems, Enterprise Resource Planning Systems, Financials, etc, each of which cost millions of dollars. Integrating these systems cost millions more. But this was what was needed. When I moved to a smaller company we still had the same needs, but on a smaller scale. We solved all of the same business needs for about $200,000. In both cases we were right-sized.
If we now look at a very common (if not most common) business technology profile we find that right-sizing is not a single enterprise factor, but a set of encapsulated factors. Each department, business unit, division, and other organizational structures each have a combination of local and enterprise needs. And each unit has its own mix of technology solutions with a mix of development environments ranging from Excel (Yes, a development environment), to client server (e.g., Delphi, PowerBuilder), to departmental, to enterprise solutions. And in the majority of these systems the core function of these applications is to simply store and retrieve flat or single parent-child datasets with few business rules and small datasets. I think we have all seen Excel driven organizations. I did an application inventory of my organization (of 16,000 people) recently, counting everything from spreadsheets used daily to packaged enterprise solutions. I found over 2,000 applications. Of those three were package (like PeopleSoft). Four were �large� business services systems with about 500 internal concurrent users, thousands of public users, and max 5M records in a table or two. The rest were used by less than 100 total users, maybe 10 concurrent, and a couple thousand records. When moving these small systems to other platforms we started moving them to our full blown J2EE WebSphere SOA infrastructure. A small C-S app written and maintained by a single person was moved to this platform. It took two months, grew to over 20X its original size, and needed support of several mixed technologies (like my large manufacturing environment). Yes we do get economies of scale, but the point is the business need was not right-sized in that environment. Converting it to a pure MS environment took about a week and the feature set was improved by including document management with SharePoint.
So my stand on JAVA/J2EE vs. .Net is � for 99% of common business needs a .Net solution makes the most sense. But for that top 1% (or so) implementing an enterprise environment in J2EE and developing for that platform is the best choice. Now some may say you can do the simple apps in plain JAVA, but this thread title is ASP.NET vs J2EE. M2C.
-- Randy Buchholz, May 6, 2010
I think that these could be usefull links for take a decision :) http://www.langpop.com/ http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
-- Carlos Lozano, June 27, 2010
I quit programming in java 8-10 years ago except for occasional legacy tasks. I think it is still far better than .Net. Java is complex, but .Net's ease-of-use comes with a price of being inflexible. Luckily, I don't have to do the huge enterprise apps anymore, so for my purpose .Net is fine/faster. My only complain about .Net is they require me to pay for almost every tiny add ons. The .Net community is really a money hungry one.
(So for most web apps that don't require extensive security, I prefer PHP because there you get everything for free. And whoever said Java is yet to catch up with .Net, if you are proud that ASP.Net 2010 has a neat MVC, gosh I used MVC in PHP during 2003.)
-- Neeraj P, November 3, 2010
Java seems to focus on writing clean, elegant code, but Java does not make any effort to make the lives of programmers easier & faster. All they care about is ELEGANT CODE. Programmers dont want ELEGANT CODE, they want to meet deadlines!
-- slime toner, November 8, 2010
First of all, what is .Net Technology? - .Net is an environment for building and running software and web applications. It enables the software to become platform and device independent.
The .net Framework allows you to: 1)Apply common skills across a variety of devices, application types and programming tasks.
Computer Systems normally require during execution a lot of interaction between the older and newer applications. Through .Net Framework we can access the functionalities that is implemented in programs that execute outside the .Net environment. Eg: Through .Net we can even access the Microsoft Office Products, Adobe Products etc.It can even use the Windows predefined DLLs. We can even access other Microsoft Components like Paint, Calculator etc.
Thus, we can say that we have a pretty easy access to the COM Components. COM components usually have an extension - .exe/dll/.ocx. But the extension is mostly irrelevant. In actual, it may refer to any object or application that contains reusable code and provides ways through which its associated data and methods could be accessed.
2) Has got Language Independence
Microsoft provides support for a lot of languages like
A programmer who is coding in C# can use the code written in Visual Basic. Similarly, a programmer who is coding in J# can use the code written in C#.
3) Simplified Deployment:
.Net framework has a very simplified deployment wizard so that the installation of the computer software could be managed easily.
.Net applications are highly secure ones. The framework has been designed in such a way so as to address small vulnerabilities such as buffer overflows.
5) Faster development:
Through .Net we can make compelling applications much faster.
6) Base Class Library:
This is a library of functionalities available to the .Net Framework. This provides classes which consists of a number of common functions like - file reading/writing, database interaction, XML data manipulation etc.
The .Net framework is portable. Its platform independent. Though till now, Microsoft has not implemented the full framework on any other system except its own. Yet Microsoft has already submitted specifications for Common Language Infrastructure (which includes all class libraries), C# language to both ECMA and ISO making them open standard. This makes it easily possible for the third parties to create compatible implementations of framework and its language on other platforms.
The latest version of the .Net Framework is 4.0. A lot of the professionals are still working on .Net Framework 3.5 and 3.0.
Last but not the least, we come to the much heated discussion. What's better ? .Net / JAVA.
There are a number of reasons why .Net is much better than JAVA.
1) .Net, first and foremost is a very fast development tool. Applications that would take 1 month in .Net framework would take around 3 months in JAVA.
2) .Net, being a very fast development tool is much more cheaper than JAVA. 3) JAVA in itself is a language. Here, you can do only coding in JAVA. But .Net is a development platform where you can use the coding languages according to your convenience. You have the options of using Visual C++, C#, J# or Visual Basic, whichever you feel most comfortable with.
4) JAVA GUI based programs look alien on the host operating systems. .Net's GUI is much better compared to JAVA's.
But still there are some disadvantages of the .Net Framework which as a developer we must keep in mind:
1) .Net Framework runs application in a managed environment which usually exhausts a lot of resources. This in comparison to other applications that utilise machine resources directly is much more.
2) Newer versions of .Net framework are only available on Windows 7/ Vista and above. if you need to make them work on OS like Windows XP, the you need to make some extra efforts. In the future more frameworks would evolve. With their evolution the support for the lower versions of the OS would not be practically possible. So, the user with the older OS would have to face lot of problems. 3) As we had already discussed, .Net Framework's implementations has been made open standard but yet it has fully been implemented only on Windows. So, .Net Framework remains platform independent just on paper. Practically, its just possible to run .net Application on Windows OS as no other OS has yet implemented .Net framework for themselves.
We have discussed a lot on .Net Framework, its advantages and disadvantages, its features. Now, we must move on to the real programming stuff. So, let's get started with .Net Programming. Let us just write a simple program for adding two numbers and then showing the result in a message box.
For further discussions and queries, you may visit:
-- Akhil Gupta, November 18, 2010
Why not use both? It seems to be the trend now to embrace the best of both.
With J2EE or Spring (preferred) we can have a fantastic platform independent back end (with all the lovely elegant code :), expose some logic either restfully or via Big Soap Service and harnass the fruits of a rich front end in DotNet.
There is nothing wrong with throwing some money at the project and placing a wonderful windows box right next to the linux box. The lead time reduction in developing a DotNet front end will almost certainly pay for the extra box.
With this approach we get a fantastic front end (better than any Java front end) and a platform independent back end as well. Everyone is happy.
Just my 2 cents.
-- Jean-Jay Vester, March 15, 2011
Why not discard both of them and use Ruby on Rails or Groovy on Grails for the 90% of small scale fast pace development of web application. The rest 10% needing more robustness and scalability can use Java using Spring dependency (or Scala). I am guessing the developers here who are stating .Net development fast ( with all the crap it generates creating nightmare for maintenance ) missing out RoR or Groovy on Grails.
-- Abu Khalique, March 17, 2011
We had developed application in J2EE, .NET. The Main difference I see is the J2EE application we developed ten years back in Java is still giving excellent results though we had to upgrade OS[Linux] , java version[current 1.6] and app server[tomcat 1.6]. The server configuration[64Bit dual processor, 2GB RAM] In the past 10 years we had extensively plugged in lots of new modules, added new frameworks and features without any issues. This is what every company is expecting from technology.
The advantages of using J2EE with Linux Vs .Net ON Windows Server Excellent processing power, Free of any proprietary software, No need to upgrade now and then, Excellent backward compatibility,
Setting up of development environment happens in 1 hour [installation of JDK, Installation of Eclipse / Netbeans] as compared to 5 hours in .NET [Installation of .NET framework and update of operating system, Installation of Visual Studio - 30 mins]
Development is much faster in J2EE as most of the components are available in open source like - DAO [ibatis/hibernate], View [display tag], Template engines [Velocity, Tiles], Code generation tools, lots of communities for help, good standards in coding and lots of other components. as compared to .NET where most of the things available are proprietary, has to develop most of the components for custom usage, less community available as they are split on different languages like VB , C#, J#, etc, no common coding standards available.
Configuration of a server happens in 2 Hours [Linux setup-40 mins, Tomcat Configuration-5 Mins, Mysql configuration - 15 Mins, Firewall config - 30 Mins, server hardening-30 Mins] as compared to 12~20 hours in Windows [Windows setup-2 hrs, update patches-4hrs~8hrs, server config -1 hr, .NET framework update & install-20~40 Mins, IIS Config- 30 Mins, Application Configuration - 1 hr, Server hardening - 2hrs~5hrs.
-- Denis Mathew, July 20, 2011
i am working on J2EE from last 2 months and now, this is the time when i decide to go away from java J2EE , i am suffering from a high headache, J2EE is very difficult to build web apps there is a lot of configuration that is much bothering , now i decide to chose Asp.net
-- Munawar Saeed, November 6, 2015
I prefer ASP.NET simply because it's extremely easy to go between writing Windows applications, internet applications and console applications etc. Also, the Visual Studio IDE is pretty much the most effective within the business. Get yourself a copy of one of the free Visual Studio express versions and check out it out for yourself: http://www.microsoft.com/express/. Simply learning ASP.NET unlocks the ability to figure on projects such as: Windows applications, Web applications, Xbox games, Web services. And many a lot of. Furthermore, in my area, there are many more ASP.NET jobs available than Java careers. Read more at http://www.keenesystems.com/Expertise/ASPNetWebApplications.aspx
-- Elisa Gracedd, December 16, 2015
I am a J2ee developer & possess around 10 years of experience in mentioned domain & have explored different J2ee frameworks. I don't have much exposure of .net technologies & have some questions for .Net lovers, if they can help me in finding solutions under.net/Microsoft umbrella.
-What does .Net offer when it comes to a matter of declarative transactions? Since in J2ee, both of the two popular frameworks, EJB & Spring, are offering a stable & tested declarative/container managed transaction thus relieving the programmer from writing transaction management code & allowing him to focus more on business logic.
-J2ee is offering excellent velocity template to completely segregate business layer with front end & thus offering programmers an excellent MVC pattern, with loosely coupled layers, when gets integrated with Spring MVC. Does .net MVc offer anything like this?
-When it comes to a matter of 2 Phase commit, EJB from J2EE frameworks is the answer, what does .Net offer in this regard?
-In order to support distributed transactions, there are numerous J2ee servers like WebSphere & WebLogic which have proven worth regarding transaction management, whereas Microsoft IIS does offer that level of power?
-What is the answer from .Net fans to a customer requirement, who wants to host its application outside Microsoft platform?
Bottom-line is that everything in this world is not just Rapid Application Development. Though RAD matters when we talk of small scale applications. When it comes to matter of designing enterprise level, then many other factors like scalability, security, portability etc also matters & to my knowledge, J2ee is far ahead to that of .net in terms of these factors.
Also, when talk of RAD, then J2ee is not inferior to .Net, will discuss it in detail at some other stage.
Adeel Umar Usmani
-- Adeel Umar Usmani, April 4, 2016