Fog Creek Software
Discussion Board




Java and .Net both a Disaster: Research

This ZDNet send-up of a Gartner report is an example of piss-poor journalism. Nonetheless the type of thing that people like to talk about.

Java and .Net both a disaster: research
http://www.zdnet.com.au/newstech/enterprise/story/0,2000025001,20269968,00.htm

Has anyone seen the Gartner report this article is supposedly based on?

At The Bellows
Saturday, November 16, 2002

J2EE = Java is your hammer, use it everywhere, make it fit!

.NET = Environment programmers rave about.  It's UI GUI delicious, writes most of the code for me.

I think it is valid to point out that a single solution or the nicest looking tool is sometimes not the best choice.  There is a reason C, C++, Cobol, and Assembly are still around they work.  I don't need some hyped up middleware (application server) or runtime "environment" to be successful. 

Of the two I think .NET will win, not because it is technically superior, but because it has better tools and less choice.  Yes I said that, less choice.  No need to play platform and application server matching.  J2EE is just overly complex.  J2EE reminds me of the poster on despair.com "Consulting.  When you don't have the answer, there is good money to be made prolonging the problem.

It is sad after 40+ years of programming we can't come up with tools that offer any more reliability than the old ways, especially when it comes to business type applications.  Cobol shines, all we have done is make desktops prettier and added complication because there are about 50 layers of abstraction. 

I say piss off J2EE and piss off .NET.  We didn't need you before and we don't need you now.  You add nothing but cost, vendor lockin and shiny tools and yet another degree of separation from what is really happening.  I am not bashing tools that make things easier for programmers, I am bashing technology that promises the world and strings you along wasting time and money.  VB, Delphi, and Access are all good and capable tools too and they don't claim to be the answer to everything.

Crusty Admin
Saturday, November 16, 2002

I have to disagree with you on a few points.  .NET makes life much simpler on the programmer (simpler == more productive).  You generally don't need to worry about the Win32 API, pointers, etc.  Obviously some of these things apply to Java/J2EE as well.  Where I think .NET shines is the toolset (VS.NET is a developer's dream compared to Websphere Studio et al (Eclipse, Netbeans, etc))

<<
We didn't need you before and we don't need you now. 
>>

Have you tried creating a Web Service with VB or COBOL?  Interoperability is becoming a big issue these days and companies are going ahead with Web Services in their overall software architecture (I met a few developers from a large financial company in Boston last week at a .net training class.  All depts at this company have been moving to Web Services for intra/inter-department development.)  It's just not doable/practical without J2EE or .NET.  If you try VS.NET you'll see how amazingly simple it is to create a  web service.  And that's not all .NET has to offer - look at the ASP.NET architecture.  It's light-years ahead of old ASP/PHP/etc in terms of development tools.  Which translates into productivity for you and me.

<<
You add nothing but cost, vendor lockin and shiny tools and yet another degree of separation from what is really happening.
>>

I'm also tired of hearing about "vendor lockin."  Especially when it comes to J2EE/Java.  Take your pick of J2EE Server:  Weblogic, Websphere, Oracle9i App Server.  They all have proprietary extensions that try to give themselves advantages over their competitors.  Sure, you can choose not to use them.  But if it comes down to implementing your own version of EJB-XYZ and 'wasting' X weeks time so that 'someday if we decide to switch' when you could have just used the App Server's extensions; Management will decide to use the extensions. 

It all boils down to resources: Time & Money.  If someone were really, really, really worried about vendor lockin and graduated from Crazy-Go-Nuts University and owned several banks, they'd hire Comp. Engineers to create a computer architecture, a herd system engineers to develop an OS for it, not to mention software engineers to create the software for this OS.  Then you have become the vendor & consumer. and can do what you like.  Until then, we are 'stuck' with Windows, Linux, et al. 

Personally, I've used Websphere for about a month and didn't like the slow IDE & near-impossible-to-configure server.  (I run a 1.4ghz machine with 1.5gb RAM) In comparison, VS.NET kicks its butt all over the place.  Reliability/Scalability may be the only thing that .NET has to overcome against Websphere...if you can get Websphere working that is ;-)

But I digress.  If VB, Delphi, Access, etc let you do all the voodoo that you need to do...that's great.  But some of this 'shiny new stuff' is very promising - just like VB, Delphi & Access were when they were released.

Giorgio Galante
Saturday, November 16, 2002

Giorgio, I agree with you about the web services being easy in J2EE and .NET.  If they are truly important (hint: they aren't yet by a long shot) there will be more tools to do them with than J2EE and .NET. 

"But if it comes down to implementing your own version of EJB-XYZ and 'wasting' X weeks time so that 'someday if we decide to switch' when you could have just used the App Server's extensions; Management will decide to use the extensions. " 

Exactly, now we have vendor lock-in.

What I gather about web services is that they amount to glue to connect disparite systems or give a third party access an internet capable api.  That and they help XML seem more important than water itself.

Of the two, .NET will prosper because it seems much easier to use, and can be used effectively by almost anyone with a computer and a 100 dollar copy of vs.net (vb, C#, C++, etc).  Sure I can download J2EE and Forte or whatever it goes by today, but is it as slick and useful as .NET, heck no.

Crusty Admin
Sunday, November 17, 2002

I agree with Giorgio wholeheartedly.  It's difficuly for me to understand the loathing that some people have for "dumbed down" platforms, such as .NET/Java.  There are fundamental truths that need to be accepted:

- .NET/Java will not make a bad programmer into a good one.
- Sometimes, .NET/Java can make a bad programmer look like a good programmer for a while (esp. UIs), but things are really a horrible mess internally.
- Beware financial "conflict of interest" from your vendor.  i.e. Microsoft advocating "scale-out".
- Cross platform programming to avoid lock-in is usually a loser.  How much do you lose by only using the 15 functions that "actually work" on all five target platforms?  And if you do lock in, is Oracle or IBM really a better buddy than Microsoft?
- Some of the default libraries in .NET/Java are "easy", but grossly inefficient.  Usually, this is okay.  Sometimes, it's not and you need workarounds.  Is this any different than C++?
- .NET in particular makes coding go amazingly quickly.  This means a higher percentage of engineer time spent going "what are we building?  how will it work?  what are the "business rules?"  Some programmers don't like or are not very good at these tasks.  When their 200 lines of C code become 12 lines of C#, their focus and time usage has to change and some developers are resistant.
- Not everything needs to be 3-tier.  You're not "bad" if you put your business logic on the client.  Don't believe someone that says their architecture is the "only way".
- Web services don't solve business problems of communication, reliability and trust.  Usually, these are larger problems than what basically amounts to "how can we use XML instead of ASCII to chuck around some database rows?"
- .NET/Java don't "change everything".  They're just better ways to abstract and simplify the moving around of bytes.  Under the hood, it's all just processor instructions.  Fortunately, the abstraction is still shallow enough that a very good engineer can still understand how .NET stack frames and garbage collection work.  It's not scary.

Personally, I think .NET is the greatest thing since sliced bread.  This is coming from someone who's written multi-tasking kernels in assembly language and done custom boot sectors for hard drives.

Do we need .NET and Java?  No.  We also didn't "need" C, C++, OOP, etc.  Why did these technologies help?  Because the human brain has limits, and when many brains are working together, the complexity of tasks than can be tackled goes down.

.NET/Java can be inefficient, especially if used incorrectly.  Inefficiency exists all over the place, though.  The frame of a house is built using mostly 2x4 lumber.  What should this tell you?  Most structural members are stronger than they need to be.  Sure, you could "optimize" a house by buying specially sized lumber for each portion.  You might even save some money.  But you will have spent a lot of time, had to hire expensive craftsman, and the buyer of the house won't care either way.

As a general rule, any idea that requires people to get a lot smarter is a loser.  The correllary is that ideas that allow (but don't require!) people to be less intelligent are winners.

Sorry for the ramble.  Thoughts?

Bill Carlson
Sunday, November 17, 2002

I can, anyone can, create web services without having the humongous architecture of .NET.  It can be written in any of the existing languages and dialects that we already have.  That has been true for at least the past ten years.

If this were the reason for .NET then it would fail as all such unified 'the universe is this shape' platforms tend to fail or atrophy over time.

.NET is about ubiquity.  Its a model that says what is good for an intranet system;tightly bound controls, components that run consistently and are off the shelf; is also true for distributed applications.

It depends upon selling the idea that you want to ship packaged components and data across a variably sized pipe.  The level of abstraction (this month's word), is at a level which hides vitually all of the gubbins of the protocols and bit twiddles needed to accomplish that.

On the face of it this reduces the amount of knowledge required to build distributed applications.  Its tempting to think that reducing the perceived skill required to produce applications is about the worst result for existing practitioners, even though this leaves practitioners with being accused of making things complicated in order to justify delivery times and costs.

.NET though is not a 'one size fits all' solution.  A distributed application on only one client platform on only one server platform (which isn't going to be completely ready for a couple of years), tends to imply that the application is dependent upon that platform and how that platform develops.

It may make creating the application today simpler, in the end though it might just well be another dead end that will need redeveloping within three years.

On the other hand I can't really judge Java, J2EE and such in the same way.  Its still on a single platform since its an abstraction of a platform.  There are simple ways to make agnostic web services that don't depend on a particular library, component architecture on the client simply because it can be treated as a language.  Its as straightforward to create a web service in Java as it is in Perl.

In reality all of the problems that Java claimed to fix and .NET claims to banish are illusory.  So long as the messaging protocols between client, intermediate tiers and servers are well defined it doesn't matter what any of those tiers are written in or which platform they run on. 

Choose the language/platform that makes sense for the particular tier that's being developed, factor in all the available developer experience both current and employable as well as the costs involved.  .NET or J2EE may well be chosen as a result, but don't try and fit the solution into the box, build the box around the solution.

Simon Lucy
Sunday, November 17, 2002

C'mon,

I know religious wars are stupid, but comparing Visual Studio.NET to FREE Java IDEs (Netbeans, Eclipse) is silly.

Compare VS.NET to IDEA. That's fair (IDEA wins).

Walter Rumsby
Sunday, November 17, 2002

Crusty Admin,

Can you say component-based software development?

VB, Delphi, and Access are all good and capable tools, but  they don't allow developers to build plug n' play enterprise software systems. 

Corporations love the concept of building compoent-based software systems because it is hoped that this method of software development will allow them to outsource the majority of the work to distributed project teams.

one programmer's opinion
Sunday, November 17, 2002

Walter Rumsby Writes:
<<
I know religious wars are stupid, but comparing Visual Studio.NET to FREE Java IDEs (Netbeans, Eclipse) is silly.

Compare VS.NET to IDEA. That's fair (IDEA wins).
>>

Alright, lets compare <a href="http://www.icsharpcode.net/OpenSource/SD/default.asp">SharpDevelop </a> to NetBeans, Eclipse, Websphere et al.  It's just as free.  It's much more responsive/crisp.  The Java-based IDEs "feel sluggish...like a wet sponge ;-)" 

I don't think you can put IDEA up next to VS.NET.  (Coming from Visual SlickEdit 7) I've messed with it and was unimpressed.  Personally, for non-GUI related stuff I prefer Visual SlickEdit.  But back to the point.  IDEA costs $367.  You can get VS.NET or JBuilder "Learning/Standard" editions for much less and you get much more. 

Put VS.NET up against JBuilder, now maybe you've got some level of competition.  But to be honest with you - I wouldn't trade VS.NET for JBuilder.  If Microsoft can manage to port the .NET Framework to *nix, Java will be in serious jeopardy.  The <a href="http://www.go-mono.com">Mono Project</a> is currently trying to do an open source implementation, but who knows how long that will take to get the full class library built.


Ok, I'm not trying to start any IDE/Dev-Platform wars.  Suffice to say, Microsoft has built a great set developer tools.  Honestly, I'd be quite happy if Sun/IBM/etc build a great, fast, intuitive IDE ala VS.NET for Java.

Giorgio Galante
Sunday, November 17, 2002

Ah Crap!  the URLs in my last post should be http://www.icsharpcode.net/OpenSource/SD/default.asp and www.go-mono.com

Giorgio Galante
Sunday, November 17, 2002

Giorgio: Have you tried creating a Web Service with VB or COBOL?

You say that like it's something everyone's supposed to be doing. Can someone tell me why I would want to create a web service in the first place? What exactly is this new architecture going to solve?

I frequently read about the failings and complexity of software, yet the whizzbang technology of the decade never seems to address these problems. Come to think of it, OOP didn't really live up to its promises either. Time to move on to the next big thing, I suppoze.

Lemmings on Scooters
Sunday, November 17, 2002

Lemmings, to tag onto your post.

When software development fails, why does it seem the new or better way is always more complex.  We need more K.I.S.S. when it come to programming.  A giant new framework or new approach is not always (rarely ever is) the answer.

Crusty Admin
Sunday, November 17, 2002

Lemmings on Scooters Writes:

<<
Giorgio: Have you tried creating a Web Service with VB or COBOL?
>>

Does it really matter what I've done?  I've done the closest thing there is to a web service in Lotus Domino (VB-like syntax) which is to call a function from a URL and return some data.  Is it intuitive?  Not really.  Does it use a standardized format?  No.  Are the debugging tools decent?  Hell no.  VS.NET Does one hell of a job in letting you debug web based projects (including Web Services) in my opinion.  I don't think COBOL or VB will let you step through a Web Service call. 


<<
You say that like it's something everyone's supposed to be doing. Can someone tell me why I would want to create a web service in the first place?
>>

Not "everyone" should be doing it.  Only the folks who happen to work with systems without common interfaces.  Middleware/Integration folk.  Web Services is essentially a way to call a function remotely through the http protocol and return some XML data. 

<<
What exactly is this new architecture going to solve?
>>

It's going to allow inter-system communication/processing using a standardized interface & data format format (XML).  Imagine a room with 14 people who spoke 14 different languages but they all the ability to read/write in English (for example).  While it isn't their native language, they could communicate with each other by writing messages to one another.  That's what XML/Web Services gives you.  And .NET/J2EE facilitate this.  And this is a Good Thing.  As far as I know you can't create a Web Service with COBOL (maybe w/COBOL.NET).  And I'm assuming it's possible but much more difficult using VB than .NET. 

<<
I frequently read about the failings and complexity of software, yet the whizzbang technology of the decade never seems to address these problems.
>>

I hear this often enough.  If you learn .NET you will realize it simplifies your life as a developer.  Example:  My first .NET project for work was a web page that allows a user to upload a file (Sales Memo) and email a notice to a bunch of people with a link back to the sales memo file. It's less than 20 lines of code. I don't think you could achieve that with VB or COBOL.  Yes you could with XYZ scripting language.  But have fun debugging it. 

Again, for me - it's all about the developer tools!!!  The better the tools we use, the more time we spend coding on the logical part of our code. 

<<
Come to think of it, OOP didn't really live up to its promises either. Time to move on to the next big thing, I suppoze.
>>

Maybe for you.  Personally I think OOP makes you think more about the structure of your program.  OOP does work.  No, it's not magic.  Yes, lots of things are Hyped.  .NET/Java/J2EE/OOP/WebServices/COBOL/C/Pascal included.  If we all had this mentality we'd still be sititng in buggies getting pulled by horses because the first cars sucked ;-)  Lets not forget that the PC industry is very young and so are our tools.  These are the growing pains. 

If you don't like learning new stuff, new technology, it's tough to imagine why you'd want to be a programmer.  Look at all that's changed in 40 years.  How many microcode or assembly-lang programmers are there out there?  Yeah, there's a very select FEW.  But the majority have moved on.  Lunchtime!

Giorgio Galante
Sunday, November 17, 2002

Hi Georgio--

"Does it really matter what I've done?"

I was quoting your post, not directing that question at you. Pardon for the confusion.

"Web Services is essentially a way to call a function remotely through the http protocol and return some XML data. "

Hmmm... XML-RPC over http. How new. I recall doing that in the mid 90s, although it wasn't nearly as sexy then. Apparently this concept has gone mainstream, for reasons I don't yet grasp.

"It's going to allow inter-system communication/processing using a standardized interface & data format format (XML). "

I'll have to remember that one for my CIO. Boy will he/she be impressed-- never could resist a seductive, new and complex paradigm.

"My first .NET project for work was a web page that allows a user to upload a file (Sales Memo) and email a notice to a bunch of people with a link back to the sales memo file."

If this type of example has got you all starry-eyed for .NET, then frankly there's no cure for you. Sounds like a great elixir for folks with little or no expectations ("Come look fellas!! I just created a... wuh-wuh-web service!!"). Go forth and crank out those earth-shatteringly new solutions, 20 lines at a time. :^)

"If we all had this mentality we'd still be sititng in buggies getting pulled by horses because the first cars sucked ;-) "

I've looked at .NET, and this ain't like going from horse-driven carriages to the automobile, that's for sure. It's more like thinking your new Chevy is a Mercedes just because the car salesman sold you the "True Coat" rust protection.

There have been incremental improvements in computing, for sure. I'm not in favor of turning the clock back to microcode and assembler. I'm in favor of simple, usable technology, not an ever-rising tower of technologies that consists of one leaky abstraction built on top of another.

When .NET/J2EE hysteria begins to wane, you can be sure that the vendors will concoct a new sexy paradigm. After all, they need to sell to keep this merry-go-round spinning. And yes, I'll probably still be bitching about it.

:^P

Lemmings on Scooters
Sunday, November 17, 2002

<<
If this type of example has got you all starry-eyed for .NET, then frankly there's no cure for you. Sounds like a great elixir for folks with little or no expectations ("Come look fellas!! I just created a... wuh-wuh-web service!!"). Go forth and crank out those earth-shatteringly new solutions, 20 lines at a time. :^)
>>

Eh, it was just an example of how easy it is to do things ;-)  It doesn't get me starry-eyed. 

<<
Hmmm... XML-RPC over http. How new. I recall doing that in the mid 90s, although it wasn't nearly as sexy then. Apparently this concept has gone mainstream, for reasons I don't yet grasp.
>>

How easy was it to do back then?  (Really - I don't know)

<<
I've looked at .NET, and this ain't like going from horse-driven carriages to the automobile, that's for sure.
>>
Sorry, I should have clarified - the Web Application (ASP.NET) side of the .NET house is certainly like going from a horse-driven carriage to a car.  Building a large-scale n-app with ASP/PHP is much less manageable than ASP.NET's model.  Plain and simple.  You mentioned you've looked @ .NET - have you tried VS.NET yet?  If you haven't - I suggest you give it a whirl before you dismiss it as just a 'new shiny marketing ploy.'

<<
I'll have to remember that one for my CIO. Boy will he/she be impressed-- never could resist a seductive, new and complex paradigm.
>>

I didn't ask you to be impressed.  Personally a good chunk of my work is getting systems to work together.  Right now I have to integrate a Remedy Helpdesk/SQL Server backend to a Lotus Notes/Domino database/application.  It's a major pain in the ass because they can't talk to each other except through SQL, but you have to jump through some hoops to get Remedy to play nice.  Lets say that in the next release, Remedy Helpdesk includes Web Services support - my life will be that much easier (the new/next Lotus Notes/Domino R6 includes Websphere for Web Services support.)  I'm interested in what makes me more productive.  And .NET/J2EE/WebServices have the potential to do that. 

Giorgio Galante
Sunday, November 17, 2002

Georgio--
Your experience with .NET sounds like a good one, but I still see it affecting the overall prospects for software.

Hey, a fancy IDE, code generator and new architecture just might make strides toward software that's usable and reliable. Feels like I've chased that mirage before, though, only this time we're using new acronyms.

Despite incremental improvements of these platforms, I haven't seen anything in Java or .NET that demonstrates the programming world is serious about tackling fundamental problems. I'm probably asking too much.

In the mean-time, isn't that new VS.Net simply georgeous!!!

Lemmings on Scooters
Sunday, November 17, 2002

I've been using both IDEA and VS.NET on a daily basis for the last couple of months. Our app consists of C#-based client tools and Java-based server web services and apps. I must say that IDEA is way superior to VS.NET. IDEA takes full advantage of understanding your object structure. The refactoring and code generation support make for a huge productivity improvement, as well as, make it easier to write cleaner code. Whenever I use VS.NET I miss even the simplest IDEA features - like auto-generation of interface implementations.

igor
Monday, November 18, 2002

>>> Whenever I use VS.NET I miss even the simplest IDEA features - like auto-generation of interface implementations.  <<<

What does this feature do? VS.NET will auto generate stub methods to implement an interface, so all you need to do is write the actual code. (Right click on a class in the classview and choose "Implement interface", choose the interface, and you're off to the races).

Does IDEA do something more than this?

Chris Tavares
Monday, November 18, 2002

VS.NET indeed has "Implement Interface" command, however it doesn't work for abstract classes. Here's what caused my complaint above. I was writing a class that extends System.IO.Stream, which has a number of abstract methods that need to be implemented by derived classes. Is there a way in VS.NET to generate abstract method stubs? In IDEA, as soon as you make a class extend an abstract class or implement an interface, an "intention" reminder comes up and you can easily make your class abstact or add method stubs.  These reminders very nicely done -- obvious but not intrusive.

The code generation is just a small part of what makes IDEA really good. There's a ton of other features that make it a much better IDE. Just to name a few: refactoring, ant integration, library management, flexible code format and highlighting support, great JSP integration.

VS.NET is step forward for VS, but it is stil far from being a great IDE.

Of course, this is just my opinion. I could be wrong.

igor
Monday, November 18, 2002

Igor,

Thanks for the clarification. Makes sense.

I've been re-reading the Refactoring book over the weekend - mmm... ide support would be wonderful.

Chris Tavares
Monday, November 18, 2002

I'm a newbie on this site; it's pretty nice.  I like Joel's ideas about keeping the quality of posts up by trying to force posters to think before posting.  It seems to work pretty well on this forum.

I notice that many of the posters here work, like I do, on in-house business apps.  Integration of various packages is often a major source of headaches.  One poster talked about his problems making Remedy Helpdesk play nicely with Lotus Notes.  Another talked about a web page that could upload a sales memo and email a notice to several people with a backlink to the memo.  Maybe I'm missing something here, but it sounds as if many of you are using the wrong tools for the job.  The emailing notice app sounds like something that should be done by a simple shell script, and the only intelligent thing that can be done with Notes is to uninstall it.

Rather than struggle with trying to integrate a bunch of disparate software, standardize on just a few, capable tools.  For myself, I find I need (i) csh, (ii) a database (Postgres), (iii) a programming environment that can do almost everything (VisualWorks), and (iv) a smattering of C for things that are performance critical or that can be done no other way.  Throw out your newsreaders, email clients, and file browsers and learn Emacs.  When you are tempted to write a threaded application, don't.  Never run anything on the client that you can adequately run on a Unix server. 

Oh, but you do need to get out of the Windows world if you want to get any work done.  Windows is OK for running personal productivity apps, but anyone running their business on it is making life harder than it has to be.

Jeff Hallman
Tuesday, November 19, 2002

I like Joel's ideas about keeping the quality of posts up by trying to force posters to think before posting.  It seems to work pretty well on this forum.

<<
Maybe I'm missing something here, but it sounds as if many of you are using the wrong tools for the job.
>>

If you've ever worked with or at a large company, you're going to have to deal with legacy applications.


<<
The emailing notice app sounds like something that should be done by a simple shell script, and the only intelligent thing that can be done with Notes is to uninstall it.
>>

Joe Six Pack Business-user does not know what a "shell" is.  And Lotus Notes?  Well - The interface sucks, but the idea behind it is pretty good.  And large businesses use it for a good number of reasons: Ease of app deployment, Easy replication, Security.  The problem with Notes is that it is too backward compatible (V6 will still run/design/compile V3 apps.  It's a noble cause, but it just makes development a mess)

<<
Rather than struggle with trying to integrate a bunch of disparate software, standardize on just a few, capable tools.
>>

Sure, and while we're at it, why don't we all try to get along and have world peace?  Seriously - your thinking appears to be very naive.

<<
Throw out your newsreaders, email clients, and file browsers and learn Emacs.  When you are tempted to write a threaded application, don't.  Never run anything on the client that you can adequately run on a Unix server. 
>>

You're sounding like a  /. reader.  This is not Slashdot.org. 

<<
Oh, but you do need to get out of the Windows world if you want to get any work done.  Windows is OK for running personal productivity apps, but anyone running their business on it is making life harder than it has to be.
>>

You're sounding like a /. reader.  I repeat: This is not Slashdot.org.

<<
I like Joel's ideas about keeping the quality of posts up by trying to force posters to think before posting.  It seems to work pretty well on this forum.
>>

I'm not sure if you're just a troll, but yes - generally this is a quality forum.  I just hope this doesn't turn into another Slashdot.

Giorgio Galante
Tuesday, November 19, 2002

*  Recent Topics

*  Fog Creek Home