Java vs .NET
CHaN_316 writes "Yahoo is running a story called 'Is Java Finished?' It provides a brief overview of the strengths and weaknesses of J2EE and contrasts them with .NET. Classic arguments are brought up like Java being great for portability while .NET ties you down to Microsoft products, etc. It's interesting that they bring up the Java Community Process, and how it is a rather slow moving procedure that is causing Java to become stagnant."
Dot Net doesn't look like a developer panacea just yet. If Sun keeps the enhancements coming and works to bring the development environment up to Visual Studio's standards (Yes, VS has its problems, but it has a lot of unique tools, like compile-and-continue, which save hours!), Java may well survive.
Dot Net is also anything but small. It's possible to create ROMmable Java applications in just a couple megs of flash memory. On the other hand, there's no such thing as embedded dot Net just yet. And if they continue with the execution model they've currently got, any piece of code is going to net a ROM many times larger than what's possible with Java. Either way, I'll want $699 for my fp, beeyotch.
Well, obviously .NET is better, since IT'S WRITTEN IN ALL CAPS.
The ".Net only works on Microsoft" is more than just a classic arguement. In fact, I think it's the most important factor to take into account.
.Net will never take off. After all, it hasn't during the 3 years its been out.
If I want to make some simple embedded device, if I have to option to use Java instead of having to license Windows CE for my product, why would I ever choose MS over Java?
Java vs .NET
Hrm, reminds me of when two fat ugly chicks in my high school started a cat fight in the hallway.
"Quoting famous computer scientists out of context is the root of all evil (or at least most of it) in programming." - K
Having worked with both Java and .NET, I would say that things like C#'s foreach statement make for easier and cleaner code, but Java 1.5 will leapfrog C# when it introduces generics along with its own version of foreach, and other timesaving features. Java's big failing, IMHO, is Swing. It is too big and too clunky, Java is crying out for a stripped down GUI library that is part of the API spec that will be as easy to work wit
One of them is controlled by an evil monopoly that refuses to turn control over to an international standards organization, while the other is a Microsoft product!
"Freedom means freedom for everybody" -- Dick Cheney
causing Java to become stagnant
Why would we not want a language to be stagnant? I wonder how much time is wasted just trying to keep up with changes to languages and development environments?
Begun, the Clone() war has.
Just raise the taxes on crack.
Whilst Java and .NET struggle for supremacy, APL shall return from the tomb of history triumphant once more. And there shall be much wailing and gnashing of teeth among the Javites and the unwashed .NET.ITES, but they will all perish as the light of a new Golden Age dawns, and the thousand year reign of APL begins anew.
Roving Web-Teleoperated Robot
When was the last time you used a .NET program? I know I can't remember. When was the last time you used a java program? Oh, just a few minutes ago myself. Besides, how can .NET ever really be a long term (it might be a short term) threat to java, since you'll never be able to use .NET on anything but Windows.
Good thing there isn't an "Ignorant" moderation title, I'd probably get it.
Dot Net is also anything but small. It's possible to create ROMmable Java applications in just a couple megs of flash memory. On the other hand, there's no such thing as embedded dot Net just yet.
.NET for enterprise/distributed computing.
Which sums up the whole apples vs oranges nature of this "debate" quite nicely. Java was developed for embedded systems,
Now Sun is trying to shoehorn Java into the enterprise world, and perhaps MSFT will try and do the opposite.
I don't need no instructions to know how to rock!!!!
.NET ? Blowing J2EE out of the water ?
.NET ?
Are you serious ? Then:
Where is the appserver that runs
Can you cluster that appserver like J2EE-appservers ?
From the article:
The slowness of the JCP holds up the creation of additional standards and services, he pointed out. In addition, standards proposals aimed at portability -- Java's strong suit -- are also stagnant.... "In the meantime, people want faster, easier development."
Golly, I like slow, careful, and secure development of my enterprise backbone software. People may want faster inclusion of features, but they need stability and security.
The latest flashy feature doesn't do shit if your enterprise backbone is crashing or being hacked into oblivion.
You would think that a language or API that doesn't change every day would be praised with words such as "standardized" "stable" and "established".
But in Bizarro World (where we all are apparently living), we criticize it as "stagnant" and "slow moving".
Compare with the OpenGL/Direct3D discussions.
Carpenters don't buy from hammer companies that change their hammers every "release".
Any article that asks that question is automatically crap. Period. End of discussion.
Business isn't willing to pay for products, innovation and careers, so we get brands, mortgage commercials and layoffs.
I'm very interested in seeing how Java implements generic programming (template programming). That's an area where it currently falls down.
Java originally promised to become a small, universal client-side platform for the delivery of applications to clients over the web. Java has almost completely failed in that mission: Flash is far more widely used, no browsers ship with the latest version of Java, and even if you stick to Java 1.1, there are numerous compatibility problems.
.NET will continue to exist in that space as well and probably take away market share. And because Sun's restrictive licenses on both the implementation and the specification of Java, I suspect Java has seen its best days in the open source world.
.NET, .NET is simply more of what Microsoft has always given us: a proprietary platform completely controlled by Microsoft. It's not primarily an alternative to Java, it's simply what Microsoft programmers will move to from MFC and Win32. Thankfully, it's at least a lot cleaner than Microsoft's previous APIs and systems.
What Java has become instead is a semi-open server-side platform. It's quite successful at that, but it is only one of many platforms in that space. PHP, Perl, Python, and
Now, about
So, Java has failed to become what it originally promised to become, but it is a fairly successful platform that won't disappear overnight. But Sun's dreams of industry domination are pipe dreams. Java could have become much bigger and more important than it has become, but Sun screwed up (and is continuing to screw up).
J2EE is written in all caps too.
No Java has already been shoehorned in a long time ago. You just weren't paying attention. Also, just because the JCP goes slow, doesn't mean Java is stagnant. It means the JCP is slow. Trying look at jakarta.apache.org, and then tell me all this bs about stagnation and ill-suited purpose.
Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
Strangely enough, I found that I was having some perf problems in my library functions that exactly modeled what MFC was doing in it's calls to the MS ODBC dll.
After quite some digging, I found that a call to a DLL function with exactly the same parameters by my API as opposed to an MFC call to the dll was way slower and in at least one case gave different results. Please note that I'm talking about perf on the function call alone, all other things being constant
Conclusion:MFC was 'rigged' to perform better with the MS ODBC DLL than a third party function call.
It wouldnt surprise me if there were similar reasons for performance differences between .NET and J2EE - thoughts?
I run the same Java apps on Windows and FreeBSD all the time. Most good apps have no trouble crossing platforms. The only major sticking point is Swing or (especially) AWT, which are implemented with varying degrees of quality across platforms.
I read the internet for the articles.
Sounds like more MS FUD to me. So how many times has Java been declared dead/ dying now? .NET.
Where I work (for a DoD agency) we are developing J2EE solutions with open source tools in part to get away from vendor lock in, something that MS is particularly bad with. Once MS ratchets up the lock in with the introduction of DRM in Office file formats, I think MS solutions as a whole are going to become less attractive, and this will be a strong disincentive to adopt
I know this because Tyler knows this.
I know you're trying to be funny, but I mark my students' projects using my Mac dual G4. They were developed on PCs and *X boxen, but I run them on my own machine. If there are problems, we have a serious chat.
I teach advanced object oriented design and security. It keeps food on the table.
Is Java finished?
Of course it is... and this late in the day it's time to switch over to beer anyway.
If it's UI-based, .NET blows the doors off of Java. The design tools are so much better and the UI objects actually work the way they're supposed to. Swing is one royal PITA if you ask me, with lots of bizarre implementations, bugs, and poor interoperability with the native windowing system in many if not most cases.
If it's server based then J2EE holds an upper hand in more than just portability. Most of the J2EE containers out there have application build environments that are at least as good as VS.NET and since they tend to run on more scalable hardware they're easier to deploy for large sites. Various mature application frameworks are available too.
The thing to remember about .NET is that it's really Microsoft's Java repackaged in a form that Sun can't sue them over. It has most of the JDK 1.1 libraries pretty much intact but with package and method names changed. But they did a very nice job in fixing a lot of issues that Java has.
In particular .NET's assembly management beats the heck out of collections of jar files.
YMMV, but if you're building a client and you don't absolutely need multi-OS support then you should really look at .NET. If you're building a small server it's probably worth a look too, ASP.NET forms are very easy to construct and they have decent tools for working with MSQL. But if you want a large-scale system I would not consider it, they need to work a lot harder on deployment issues and scalability of the base OS.
jim frost
jimf@frostbytes.com
such as cell phones (J2ME) and Linux? From what I understand MS has no presence on cell phones (and there are a lot more cell phones than desktops) and they'll do their best to avoid needing to have a presence on Linux (i.e. bribe a down-and-out company to try and take out Linux in the courts).
.NOT.
I think Sun has done a great job promoting Java on a variety of platforms, so I think McNealy isn't concerned about
smd4985
and later,
Huh? So first this article complains that Java is too complicated and needs to be simpler. Then it complains that Sun makes it hard to add new features (i.e. complexity) to the platform.
I'll say it again...Huh?!?
I think the JCP moves at just the right speed. If you change a language too quickly, make it harder for everyone to keep up. If you move to slowly, the language/platform won't be able to keep up with current technology. It should be hard to add things to the Java platform. A lot of people have a lot of different ideas about what Java should be. Sun tries to make sure only the best of the best gets integrated into the core platform. Anything else can be left as a 3rd party library (like AspectJ for example).
A great man once said, "The Law should be stable but never stand still". Programming languages and platforms are the same way. Turning the JCP into a rubber stamp for new, unproven ideas isn't going to do anyone any good.
Actually
I mean GUI programs. "Windows Forms" is what I believe most Microsoft developers call them.
In other words, Visual Basic Applications. C++ Applications.
ASP.NET == Web Applications.
What the fuck are you smoking?
There are some good Java IDEs, no doubt, but none of them can touch Visual Studio for, well, any single thing you could possibly want to do with an IDE. From designing interfaces, to writing code, to generating code, to debugging code, to remote debugging, it's just awesome and completely customizable.
Maybe you just picked it up, said "Oh Microsoft, must be junk." You were wrong to do so; it's way better than VS 6. Maybe you saw the animated docking and said "Too pretty, must be junk." You're wrong again...that's the first thing I take out, but by and large it's not a whistles and bells IDE. Maybe you saw all the icons and thought, "Too visual, must be junk." You'd be wrong...everything you want to do in Studio.Net can be done without ever touching the designer, and in fact I don't have a single icon bar turned on in my IDE.
Compared to Sun's IDE, the awesome in its own right open source Netbeans, VS is much faster for compilation, has more accurate and immediate response from controls and object generation is more reliable. The tools are for the most part simpler while at the same time being more complete. They are easier to use and you can mess with the generated code without destroying the associated resources (for the most part). VS.NET doesn't have as robust a feature set as some Java IDEs, but it's got plenty and it all works.
Hey freaks: now you're ju
I would try my best as usual to avoid both. Say I have to produce distributed networked applications that are portable. I'll just use QT. Say it has to be used in embedded systems too. I'll use ANSI C using gcc compilers everywhere, and use #ifdefs to make up for the difference.
.NET and Java to be efficient enough to be worth it. I'd rather hire more expensive coders who can do C/C++. I know it is 2003, but even for the most complex applications, I enjoy trying to run it on my Pentium 200MHz 48mbRAM 2GB hdd system with Windows 95 to check how lean and mean the code is. Just compare Opera with Mozilla and tell me what you like.
Therefore, I'll save my company big bucks, since they'll use less ram and storage to save and run the code. They'll also need lesser CPU/MPUs.
Say I have to work on an ERP system. The same combination comes up. I'll use a good database that runs on many platforms (DB2? Firebird? pgsql?) and the GUI frontend will use QT or glib or fltk or the likes.
I havent found abstraction layers (virtual machines?) like
"Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
I know you're trolling but, How is java related open sourced? I can not get the javac.exe source code.
Please follow along carefully:
1) Go to http://java.sun.com.
2) Click the button labelled "J2SE - Core Java Software". It's the big blue button in the middle.
3) On the next page, click "Source Licensing". It's in the links on the left-hand side of the page.
4) On the Source Licensing page, click "Download".
5) Follow the directions to download the entire J2SDK source code.
Now, what was that about the source code not being available?
ZFS: because love is never having to say fsck
http://www.microsoft.com/mobile/smartphone/
...the best comment from Kuro5hin was that the only thing he likes about .NET is that VB's backwards compatibility is broken so maybe folks will learn a real language...
I checked on Java on it's early days when Sun had Engineers. Henry Wong I think was ( about 5/6 yrs back, don't actually remember who else was there) conducting the seminars.
Sun had a great promise. But, it is still a promise. I have seen so much bullshit around that language and half-progrmmers posing as object Gurus etc. etc. made me really sick.
Saga continued, DOT.COM made our company rich but Java made us poor.
We blew over 5 mil behind a product with good and bad programmers but still that product did to gain any ground. The we added some good marketing people ( yes they exist ) with lot of effort they made it barely sellable.
If Sun were spending half as much energy behind the hardware division their stock will not be in single digits today !
Now-a-days, when I go through resumes of new/experienced programmer, knowing Java AND not knowing C or PERL is a disqualification to me--these people will never get through the door.
There is no such thing as Java Programmer--either you are programer and program whatever language come in your way or you are just a total waste of space.
So, I guess, end of Java will end of lot of stupid people who should not have in the programming profession in the first place.
whatever
- People who believe other people have no right to live, got no right to live ...
- "Java's not exactly deceased."
- "Java's not exactly no more."
- "Java's not exactly ceased to be."
- "Java's not exactly expired and gone to meet its maker."
- "Java's not exactly a stiff."
- "Java's not exactly bereft of life."
- "Java's doesn't exactly rest in peace."
- "Java's not exactly pushing up the daisies."
- "Java's not exactly run down the curtain and joined the choir invisible."
- "Java's not exactly and ex-dev-platform."
You know, just for correctness sake.The real world largely ignores the rambling of propeller-heads. There's more COBOL out in the wild than all of the Java ever written, and it isn't going anywhere.
Most people understand "if it ain't broke, don't fix it".
I don't need no instructions to know how to rock!!!!
I think MS is taking the opposite approach, but not on the size scale side.
.NET, and solves one real life problem that no other solution brings to the table, cross language compatibility.
.NET solves.
.NET becomes truly cross platform, great.
I am currently developing in
I can't remember the last time I had to develop a client (not web) application that had to run on 2 or more platforms.
In all my years, no one has ever said to me "build me such and such and make sure it runs on unix and windows without recompilation".
However, I have been on many teams where everyone knew a different language or paradigm.
This is the problem that
The VB and OO coders can finally work together and speak the same APIs.
If
Can't say that it will make a difference to me since I guess I'm the only person in the world who knows what platform they are devloping for up front.
Another way of looking at it is that Java is too encumbered by intellectual property--copyrights, patents, and licenses--held in part by Sun and in part by an industry consortium (JCP). Anybody that builds applications on top of Java becomes as dependent on Sun as people who write Windows software become dependent on Microsoft. While there are plenty of open source projects for both Java and Windows, ultimately, that is not a good state of affairs for open source developers.
WORA made sense for Java's original purpose in life, that of a thin, universal client platform. WORA makes no sense for Linux developers trying to develop high-quality Linux applications. (And, frankly, I think Windows programmers are saying the same about Java on Windows, which is why
Java held a lot of promise for open source development at one point, but I think that's over now. The Java platform will continue to be used widely in many commercial (and some free) server-side applications. Subsets of Java will be used in teaching and research. And you will see more and more partial clones of Java appearaing. Open source will probably continue with a mix of languages. gcj+SWT, which implements the Java language but not the Sun APIs, may achieve modest popularity. Mono+Gtk# may become fairly popular (but the
It's not up to developers. Regardless of developer preferences or platform capabilities, when the right sales people talk to the right managers, the
lest we forget that microsoft did -not- shut down the open source .Net compatible project, i'll even grant a link.
.net hasn't taken off, I most strongly disagree. Any company whose business requirements have them developing more than a single application for windows have nearly all converted to .Net in my experience.
.Net framework. The problem with the perceived lack of adoption, is the broad branding of the development tools -and- the internet services as .Net.
.Net web services has hardly budged (aside from some passport authentication). However, the framework and the development advances are most certainly in use.
.Net only works on Microsoft - but the fact that it -does- work on 95% of business desktops (as opposed to Java which requires significant finicking to get going on those same desktops) is also a benefit for those who are dealing with business realities and not philosophical preferences.
Mono
As for a claim that
with finalization on install, there is absolutely no performance loss between straight-C and C#. in fact, depending on your straight-C compiler, the C# code can run better (finalization takes specific processor optimizations into account).
every coder i know that develops windows apps is working within the
True, widespread adoption of the
granted, this is based only on my own personal experience, but i deal with a number of vendors, and have a great number of contacts and coworkers whose experiences agree.
yes,
// "Can't clowns and pirates just -try- to get along?"
With that out of the way I looked up the Sun's pet shop program example in Java and then the MS version in C#.
Look at the lines of code in the MS version? The gui portition has an 8th of the code that the java version has. Also version 2 of Microsoft's
You can do alot of things with
I heard the libraries cover more areas then Java but they are thinner then the ones Java already covers. Also C# supports enumators, pointers ( yes they are evil), and cross language support and integration. Java 1.5 is playing catchup.
http://saveie6.com/
Java's philosophy of development is to expose low-level system interfaces to give developers greater control. Microsoft simplifies the development process; the developer has less control -- but the tools are easier to use.
.NET and Java and I've found Java's toolset to be much easier to use. This is simply due to the fact that there are many more vendors (open-source and commercial) that provide Java products. I can pick and choose which tools fit the particular project that I'm working on, and those tools will also run on any platform that Java runs on, so I'm not locked into a particular operating system while I'm doing development. I can decide to work in Linux one day and Windows the next, and use the exact same toolset for both.
.NET is simpler. But in that case I'll take complicated over simple any day of the week.
Says who?
I've developed applications in both
So I guess if your definition of simple is "you will use this tool and like it", then yeah,
However, what you say is no excuse for using and especially developing for anything that's even remotely related to Microsoft and it's closed-in, proprietary platform! Openness and portability are the most important things, and even more so these days. That means you shouldn't ever use
we discovered a new way to think.
Um, excuse me, but it's very possible to create full-featured applications in assembly in just a couple of kB of flash memory. And in case you hate assembly, you can do the same thing in C++ for around 500 kB, and it will run faster than Java. Remember, embedded devices don't have the screaming fast processors that are needed to make Java appear fast. And they're not likely to have the few hundred megs of RAM that a JVM seems to think it needs, either.
Yeah, Java's nice - for the web. But given that people hate to wait on embedded devices, I can see why it hasn't been widely adopted. And given that embedded devices are often used for critical infrastructure (i.e. utilities, aircraft, nuclear plants, etc...), I'm not sure if I'd trust someone who can't master assembly to write code that controlled a something that could get me killed if an unexpected Out of Memory Exception was raised.
Can't say that it will make a difference to me since I guess I'm the only person in the world who knows what platform they are devloping for up front.
While the rest of us aren't willing to make that restriction on ourselves.
Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.
There are some good Java IDEs, no doubt, but none of them can touch Visual Studio for, well, any single thing you could possibly want to do with an IDE.
If you do any Java development try IntelliJ Idea.
Then come back and try saying that again.
-... ---
The MS Visual Studio
Try Netbeans.
Um, excuse me, but it's very possible to create full-featured applications in assembly in just a couple of kB of flash memory. And in case you hate assembly, you can do the same thing in C++ for around 500 kB, and it will run faster than Java. Remember, embedded devices don't have the screaming fast processors that are needed to make Java appear fast. And they're not likely to have the few hundred megs of RAM that a JVM seems to think it needs, either.
Yeah, Java's nice - for the web. But given that people hate to wait on embedded devices, I can see why it hasn't been widely adopted. And given that embedded devices are often used for critical infrastructure (i.e. utilities, aircraft, nuclear plants, etc...), I'm not sure if I'd trust someone who can't master assembly to write code that controlled a something that could get me killed if an unexpected Out of Memory Exception was raised.
blam... I wonder what kind of java developper you are to even argue about java portability. Java IS portable. You can just download tomcat binaries and KNOW it will work on any OS with the proper jre.... I'm developping java applications for AIX, DIGITAL UNIX, Tru64, Solaris, LINUX I'm doing this on Netbeans (a java ide) on windows and executing them on their target os without any problem. So stop talking of what you don't know trying to be funny...
C# is one programming language I've stayed away from--and for no particular reason. I had picked up the C# specification [PDF] in 2000, but never really got down to the canonical "hello world" program. Today in 2003, as I look back, I guess I haven't missed much.
Let's go back to August 2000 and revisit Hejlsberg's famous O'Reilly interview by Josh Osborn.
I'll agree with client side stuff, but I've been in a situation in the past where we developed a server size web app (in J2EE) on a single nt4 server (purely for ease of access). Then when we went gold, capacity grew and it moved to a cluster of linux servers. Then when the business picked up and capacity grew in large amounts we moved to a couple Sun E6500s. .NET wouldn't have allowed us to migrate like this.
I do very little Microsoft development these days, but I have both VB3 as well as DevStudio6 installed in my Win4Lin Windows installation. When I need to crank out something real fast, I run VB3. When I need to qukckly reference the help files, I click on VB3's .HLP files which load immediately as opposed to the new stuff that takes quite awhile to bring up.
In my opinion, Microsoft's IDE was at its height at VB3 and VC1.51 which I think was about 1993. Ever since then it's become more and more bloated. Sure, it does stuff that the older versions didn't. But just because it does more doesn't mean it's better--it just means it's bigger.
The question shouldn't be "Should I be develping this on .net or J2EE?" It should be "Should I be developing this on the web at all?"
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
> On the other hand, there's no such thing as
> embedded dot Net just yet.
Then what the hell is this supposed to be?
Except that assembly and C++ are not binary compatible across multiple embedded devices. Take cell phones for example Your choices are:
1. Port and compile a version of your program for every cell phone in existence (quite a few platforms).
2. Write a Java MIDP application that works on all MIDP enabled phones.
Hmm.... which to choose, which to choose...
Javascript + Nintendo DSi = DSiCade
As someone has mysteriously marked the parent as "interesting" it might be worthwhile to provoke a genuinely interesting debate below it so that readers are not too disappointed.
The parent insists that no Java IDE "can touch" VS for "any single thing you could possibly want to do", but a moment later admits that "VS.NET doesn't have as robust a feature set as some Java IDEs".
Features like refactoring, perhaps, as found on the free Eclipse IDE, or the modestly priced IDEA?
Or, looking a bit further afield, we could ask how one might develop a complete workflow system in VS, as you can in WebLogic Workshop?
My clients do these things all the time, but VS has a long way to go to offer a competitive alternative to the Java tools available now.
This is stupid. I make money writing software that is for sale. Openness does NOT sell software to our clients. Good software, and fair prices, sell software. Openness would actually be a major setback to writing good software.
Why? Because we would need to massively increase our testing staff, to test on a good number of different machines to ensure compatibility. Because we would have to train them. Because even among VIRTUAL machines, and systems that obey standards or even run the same exact code, there are differences which can easily become dealbreakers.
As an example: we designed our application from the ground up to allow the use of multiple database systems. Heavy abstraction, only SQL-97 compatible statements, no system specific datatypes, etc. We closely followed standards to ensure compatibility. Still, when it came time to test the first database, it didn't work. The compatibility layer was never fully implemented by the new server, as a result of a feud with the first server. We had to rework the database layer completely, and it set us back at least three months.
If we had just said "fuck agility," and designed for one system (and rigidly sold THAT system) we would have saved a lot of time and money -- enough money to discount our software for those people who needed to invest in the more costly database. We could have spent that time making great new features. That's what matters to our clients, none of whom have ever not will ever use Linux or any machine not running an x86 chip. There's too much investment in legacy software requiring archaic things like DOS, floppy diskettes, and daisy wheel parellel port printers.
Openness and portability are at best liberal afterthoughts, and are by no means "the most important things" outside of your junior year Operating Systems class. What matters is cost effectiveness. If your market is not already locked in to wintel, then by all means use Java, chances are you'll recoup the extra testing effort with your first big mainframe sale. Ours was so locked. Writing in Java would have been a foolish waste of effort.
Hey freaks: now you're ju
Maybe your developing for the school market where being able to run the same code on both a Mac and a Windows box is a great feature. Even linux is starting to come into schools. Guess what? Our products will already work with linux.
Sure, generally you know your target platform. But sometimes you don't. Also, since the toolset between unix and windows is very different, it is sometimes far easier to develop on one than the other.
With Java, you develop on whichever platform makes it easy. You test and deploy on the target platform.
I'm scared of the idea of one project written in many languages. The old web problem of HTML inside perl (or Java or any other language) should teach us that moving between languages on the fly requires a mental context switch that slows things down.
You've got your runtimes mixed up.
The Dotnet runtime consists of approximately 1200 classes, including Windows Forms, ASP.NET etc.
The CLR/CLI standard only covers core language-related classes - approx 120 in all.
Dotnet is therefore mostly proprietary and there is no spec. to implement. Mono is having to reverse-engineer, with dubious consequences.
Granted, you don't give up much portability if you write in C++, provided you know how to write portable code. (Don't use system-specific API's, or if you do, at least wrap them in another layer...).
And then there's the problem of Java not supporting the feature set of embedded devices. Is there really a setToastTimer method in Java? So I guess if was to use Java to write an app for my toaster, I'd have to settle for something that couldn't use the key functionality of the device?
Quite frankly, due to the specialized nature of embedded devices, portability is pretty much a moot issue. You do need to access the platform-specific features. Yes, I suppose if you like playing tic-tac-toe on a cell phone you'd write in Java. But the chances that you'll be able to write program in Java which utilizes a cell phone's camera and microphone as a realtime video recorder are pretty small. Any software that's non-trivial will need to access the device-specific features.
We have the server side of our client-server application running on the 1.1 Framework on XP Home using Sybase. Yeah, it would be "cheaper" under Linux, but then our clients would have to buy a new server. They already have windows for all their other apps, and buying new hardware comes from a different budget. No, I can't ask them make their own server out of tinfoil and LEDs.
.NET doesn't lock you in to anything other than the most basic OS that the Framework will run on, which is Windows 98. The whole bit about NEEDING a copy of Windows Server isn't even remotely true. Just more OSS FUD about how everything Microsoft is more expensive. Sure, it can be. So can a Ford Focus once you start bolting on turbochargers and sexy paintjobs.
We do have a solution for single machines that uses Microsoft SQL Desktop Engine. That's up to 5 machines for no cash at all. That's pretty good in my book.
In the end, unless you WANT it to,
Hey freaks: now you're ju
Java versus .NET is becoming a ubiquitous topic. It's been the subject of debate since .NET beta 1. Microsoft and Sun both have "independent" studies conducted to prove that their platform (J2EE/.NET) is better and both have convincing arguments. There is no perfect language or platform to solve every programming problem - sometimes it's C++, sometimes it's Python, sometimes it's something else - it really depends on the problem.
It's no secret that one reason Microsoft created C# is to compete directly with Java. It's pure ignorance to say that C# is proprietary and that you're locked-in to Windows. C# and the CLI (.NET) is an approved ECMA standard. This is something SUN was unwilling to do with Java. For this reason, in a sense, Java remains far more proprietary than C#. It's too early in C#'s life to say that it won't be ported to other platforms - look at Mono. There is a lot of FUD being disseminated about "Microsof is going to sue Ximian, et al. for Mono" blah,blah,blah. That's not going to happen. Microsoft has already released the source code to the CLI with one intention of "People developing their own CLI implementations will find the Shared Source CLI an indispensable guide and adjunct to the ECMA standards.". So, for the argument that C# and the CLI are proprietary and one is bound to Windows is just plain ridiculous.
Syntactically, C# and Java are extremely similar. They both derive from C++. Structurally, they are very similar as well. They are both OO languages, everything is a class, etc. Side-by-side they look very similar. There are numerous small details which make C# "friendlier" than Java, ie. C# has no requirement that the file be named after the class. However, C# has a lot of other advantages over Java. C# can make use of pointers. Java has no option on parameter passing - Objects are passed by reference, value types are passed by value. While C# has the same limit on objects, you are able to use pointers and it also supports boxing. C# supports operator overloading as well. On the merits of the languages alone, C# is stronger than Java. It should be expected since it was developed from scratch nearly 7 years after Java arrived.
As far as performance, Java leaves a lot to be desired. I won't belabor this issue. If you'd like a demonstration of the difference between the run-time execution of .NET vs Java, pick your favorite VM and run Forte, then run Visual Studio .NET (it's written in C#) and decide for yourself. Java run-time performance alone is enough to dissuade some developers.
Java does come as close to a RAD language as can be. Java applications can be developed quickly with far fewer bugs and errors as a comparable C/C++ application with the benefit of garbage collection as well. For this Java gets an "A". It greatly simplifies the process of rapidly developing database and other applications.
Is Java going away? Hardly. But like it or not, C# and the CLI are here to stay as well. It's only a matter of time before the CLI is ported to other platforms and environments just like the JVM.
If you do what you always did, you get what you always got.
My favorite tool for the integration is JuggerNET, which transparently starts up a JVM in the CLR process and the developer simply codes against generated .NET classes. I am affiliated with Codemesh, so I'm somewhat biased (take a look at Stu Halloway's great website for alternatives) but working with both platforms for a living, I just can't get excited about controversial this or that is dying statements. Both platforms have their strong and their weak points.
I love the platform portability of Java, but I think Java is too closed in terns of language integration. Doing JNI by hand is an abomination, and most people at Sun admit it.
I love the language portability of .NET (it's not perfect, but then, neither is Java's platform portability) but I hate the exception model.
So, there you have it. Neither will kill each other, they will just coexist uncomfortably until they both get replaced with something new.
And if for some reason we want a different platform (which we don't and won't), we'll have to recompile. Oh, the horror.
And that's why we have so many
"just recompile" is a great solution IF you didn't use a development model that locks you in. I use "just recompile" all the time on C and C++ programs.
Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.
psxndc
The emacs religion: to be saved, control excess.
By coincidence, I gave a talk on how Java and .NET compare, just a few days ago:
t ml
.NET has a lot of things "in the box" that a developer / team needs to go find, select, download, install, etc. for Java. I personally like the best-of-breed approach that can result from that (choose from the many SOAP implementation, choose the best one for our needs), but for many developers, having a good-enough solution "in the box" is more palatable.
http://kylecordes.com/story-260-java-net-talk.h
One thing with the SD Times identified as a source of trouble (the size of the included libraries), I identified as a strength:
This is particularly exacerbated in some development shops where extensive format decision and permission processes are needed to make any third party tool purchase (or free software adoption).
I'm posting late, so I doubt anyone will read this:
Java has needed this for a long time. Ever noticed how long it took to get a For...Each statement in Java?
Um, define bloated.
.NET 2003 IDE takes up 17 meg of disc space. With 20 projects open, and debugging it's eating 80 meg of memory. It uses 0 processor time in idle mode, less than 1% when typing, less than 20% when searching with regular expressions. It doesn't peg the CPU when compiling. Starting it up, and reading all of my files, takes 20 seconds. Starting a brand new project takes 3 or 4.
The
On this same machine, NetBeans takes over 70 meg of space, 180 meg of memory for only 10 classes, pegs the cpu if you stare at it hard enough, and it just slow as hell. Starting it can take close to a minute.
Please don't compare Studio 6, a piece of crap, and VB3, which is so old that it shits doilies, with a modern on-demand IDE liek Studio.NET. When I did Java, I used to use textpad for the bredth of my typing and editing because the IDE was so slow. Now I do it all in Studio. It's just better.
Hey freaks: now you're ju
So you've shown that .NET jobs are close to J2EE jobs, yet C# jobs are lower than Java which to me shows, in a way, how you can use the .NET platform and not be tied down to one specific language.
If Sun keeps the enhancements coming and works to bring the development environment up to Visual Studio's standards (Yes, VS has its problems, but it has a lot of unique tools, like compile-and-continue, which save hours!), Java may well survive.
Check out Eclipse for Java development. The workspace/perspective paradigm will take a day or two to get used to (plus the different key bindings), but this is a really nice IDE. I'll wager that MSFT will be copying the "lightbulb" feature of Eclipse that shows you a list of possible solutions to the problem, alongside a preview of the code changes this will entail. Very slick. The GUI could be a little more responsive, though, but so could VS.Net 2003 on a 1.8GHz P4.
I don't think it has a form designer, but for the big projects Eclipse is geared toward those can be more liability than asset.
What?? .NET is a programming language?? I had no idea, i tried to read the Microsoft marketing crap but i couldnt figure out what .NET was other than an "enterprise solution" (something we're trying to sell to big companies), a "set of software technologies" (something that comes on a CD) and a "new generation of technology" (upgrade from whatever we sold you last year)
This comment does not represent the views or opinions of the user.
You're premise is flawed. You act like .Net is some kind of miracle Rosetta stone. Far from it. If your going into a project that you want to be an all java project, you have the developers that don't know java, learn it. Now if you have a group of developers and they all know C, C++, Perl, Java, whatever and you want their project to be a .Net project. Then every single one of them is going to have to relearn their tools because they have to learn how to use the CLI in addition to their preferred language. And then after your project is complete, you have a hodge-podge, a patchwork quilt of a system in which you are eternally going to need each kind of developer on staff in order to make modifications. This is exactly the opposite situation with java, where standardization of language and libraries make bringing in new developers almost trivial. .Netization might be touted as the end to all woes, but in the long run it can bring about many more woes than you ever knew you had. So what are the drawbacks to using java? People who don't know it have to learn it. Thats it.
Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
Refactoring???
.NET code -- the #region tag is a prime example, as well as outlining -- so many that refactoring becomes unnecessary. Or at least, it becomes a waste of time.
You're complaining that VS.NET isn't as good an IDE because it doesn't offer a way to rewrite your code for you?
There's a lot of really nice ways to organize your
Secondly, if one were desinging a complete workflow system, one might think one would want to work in a system for designing such things, and not in ones' IDE. I mean, I don't want my mechanic designing my new car. Microsoft has an awesome tool for laying out workflow, database diagrams, etc, in Visio. Why do you want to integrate that with the tool you use for managing data, writing stored procedures and othewise doing grunt work? The tasks should remain separate, less you get so worked up in a particular design you start coding it prematurely...something I have DEFINITELY seen happen...
Hey freaks: now you're ju
Conversely, the ability to port easily (much easier in java than .net) to other platforms becomes a selling point down the road... but just becaue the abiilty/openness exists, doesn't mean you have to buy into it.
Make sure everyone's vote counts: Verified Voting
#1) Java was NOT originally developed for embedded systems.
I think you might be mistaken here.
Before the language was called 'Java', it was called 'Oak'. It was a language for building embedded applications on smart consumer electronics. However, Oak was way ahead of its time in terms of product targeting.
Openness and portability are at best liberal afterthoughts...
Hmmm... which is why many companies are having to essentially rewrite all their VB apps because their single-vendor locked-in language has no future. But hey, they were able to cut cost-to-market with VB5, so they saved a bundle, right?
My company chooses Microsoft. Instead of bitching and moaning about it like a good slashdotter, I point out the good, and that makes me a fanboy?
In that case, I am also a Maxwell House coffee fanboy, a Sanford pencils fanboy, a Novell Border Manager fanboy, and a Road Runner Business Class fanboy.
Hey freaks: now you're ju
What the fuck are you talking about?
.NET, not because the language "has no future," something our clients couldn't care less about anyway, but because the application is a clusterfuck which needs to be updated. Writing it in a faster, safer language like VB.NET is not be considered a liability by anyone in this company. In fact, the eventual rewrite has been used to tease the development staff..."After this, you guys can relax and do that rewrite!"
Since 2002 when Visual Studio.NET "dropped support" for VB6, there have been several service pack releases for VB6. Our company, which has a massive set of applications written in VB6, has released an update every month for our VB customers, written in VB.
We will eventually be rewriting in in
A lot of people complained about having to essentially rewrite all their Java 1 applications when Java 2 came out because 1 had no future. Those people are what we call LAZY.
Hey freaks: now you're ju
This Yahoo article is just more typical Microsoft propoganda....... Java today is way ahead of .NET. Java has more than 250 million users, There is more Java chips sold then x86 chips last year. Most of the big .NET claims are MS shops switching over VB .NET.
On the otherhand there is some ease of development issues. But these problems are being solved by Eclipse and Sun's recent involvement.
I fear nobody has mentioned the simple yet profound fact that will drive many towards .NET & Java/J2EE. It's Linux! It's free, it's stable, it's secure (relative to MS OS's). Put it together with Apache Open Source products such as Tomcat & Apache httpd, or JBoss if you are into EJBs and you can't go wrong.
.NET and Java/J2EE more irrelevant than most will admit. They are both very well designed development languages, and can accomplish most projects in a similar amount of time, with similar numbers of developers.
.NET add-in dev libraries aren't available, they just aren't provided in an FREE manner as frequently as they are in the Java world.
I feel that the technical debate between
Just one problem, most businesses wish to make $$$, and if you haven't noticed the tech sector barely able to keep it's head above water right now. Thus, all things equal I'd bet most businesses will probably opt for a Java (or J2EE)/Linux solution as the overall price can't be beat, and you don't have to waste you development time creating valueless libraries that others must have had to create already. Not to say
Anyhow, my 2 cents.
Also it means more stability in specs. Writing specs takes some time but it pays off when you need to implement the spec.
"I think this line is mostly filler"
One question: did you write this application in java? I can't imagine what you described happening in Java with JDBC. I've worked on numerous databases and though they have subtle incompatibilties, they are usually not a big hassle to work around.
.net, if there's a fatal flaw in the implementation, that's it, you are screwed. No othe vendor can help you.
Also, it seems that your development strategy here was flawed. You write a whole compatibility layer before testing it at all? Why didn't you go through and write some test code and just make sure some things worked before doing the whole thing and finding you had a problem?
What Java brings you is the immense potential for agility. You don't have to plan for agility, it just comes with it. When you decide that you want to change platforms, make a few tweaks, do some intensive testing, and blammo, new platform. With
As for people being locked into wintel, as long as there are web browsers, there's no such thing as lock in. When your clients eventually decide that they are sick of viruses, and licensing extortion, they'll be thankful that your system provides the flexibility to get them out of that mess.
Openess is never a setback for writing good software. Precisely the opposite in fact. Openess allows you to be flexible and adjust for changing market conditions, software bugs, etc.
For example I wrote a system using a 3rd party data abstraction layer. Now, what you are professing suggests that I just write to that layer. Instead I wrote wrappers that could work with any abstraction layer. It turned out that this abstraction layer was buggy as hell. After another week of work, I had implemented an entirely different layer that worked much better. If I had not written an abstraction to maintain that openess, I'd still be rewriting code.
This sig has been temporarily disconnected or is no longer in service
Actually, VS.NET is pretty buggy once you start using it on large projects. It crashes a lot. The compile is sometimes really slow. The UI designer for web pages/controls is useless on pages with a complex DOM. It has integration glitches with VSS. VS.NET 2003 is not much better. I've been on teams for both a complex J2EE project and a complex .NET development project and I have tried a lot of IDEs. I still use emacs.
How many IDE's are there to develop .net applications? One.
That's the problem here. VS might be better than most Java IDE's at most things, but that doesn't mean it's better than all Java IDE's at all things. If I want to develop servlets, I might want to use a different IDE than if I design applets.
Also, how much does VS cost? Netbeans: zero. Eclipse: zero. And if I want to pay some money there are java IDE's out there, and because they have to compete for my money they have greater incentive to provide useful features and responsive support.
This sig has been temporarily disconnected or is no longer in service
The comparison must be between .Net and J2EE, while J2ME and even J2SE are seriously lacking in component architecture and other features comparing to both .Net and J2EE.
So, once we make a comparison correctly (J2EE vs .Net) we can state: there is no such thing as embeddable J2EE just yet, while there is something like compact .Net framework.
Seems to me Java is anyhing but small, comparing to .Net - probably thanks to the way how .Net is based on XML.
Either way, I'll want $699 for my fp, beeyotch.
I think you've been in a serious rush with your fp, that's why you comment is so poor. I just wonder why is your comment so overrated? Is there such thing as FM (First Mod)?
Less is more !
"The adoption of Java was based on Web development"
.NET dirty little secret of: if you want to do anything meaningful you still have to use COM/COM+) .NET is neither.
What? Adoption of Java is based on platform portability and scalable distributed enterprise computing. (With the
Pish-tosh. Now, the adoption of Perl WAS based on web development.
*ducks*
I have a second sig, I call it sig#2.
Let's say I have a class in package A and I want to move it to package B (in dotNet parlance, packages are namespaces). In dotNet, I'd have to personally touch every piece of code accessing that class and redo the import statements (dotNet: using statements) to reflect the change. Same goes for method name changes, public member changes, method signatures (parameter order, adding parameters, etc.), etc.
Also, the good refactoring IDEs provide a lot of extras like generation of getters/setters (dotNet: properties) (also referred to as encapsulation), extracting interfaces and/or superclasses, replace inheritance with delegation, replace constructor with factory method, make method static, etc., etc., etc.
Note that most of the above refactorings not only change the class in question, but also all accessing classes and methods. This sometimes means you can make a significant change to a heavily used method or class and do NO WORK to the rest of you classes.
If you are interested in the power of IDE refactoring, check out the IDEA refactoring page. Here is a screenshot of the refactoring menu.
In short, refactoring is REALLY powerful and very, very useful. If you are saying otherwise, you probably haven't used it. Also, it should be noted that several companies are making refactoring plug-ins for Visual Studio. Obviously SOME people don't think that Visual Studio's features render refactoring "unnecessary" or a "waste of time." Myself included. (I'm a Java junky programming in a dotNet environment.)
Taft
> How many IDE's are there to develop .net applications? One.
Actually, there are 3 that I know of:
- VS.NET (MS)
- Sharp Develop (free)
- C# Builder (Borland)
and more coming (Delphi 8).
Dan
Did you just say that .net will require more programmers than JAVA?
.net.
Well then, I support
Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
Having had the misfortune of being stuck with a PICK BASIC application running inside Universe (GEAC Advance), I think the reason is that no one really writes software. Companies buy software and patch it ad infinitum. Think about why a crufty old property like WordPerfect was passed from hand to hand, when if you want a decent WP it was obvious it would be better to write one from scratch (something that's been done many times by others). Part of it is brand name, but you can retain that without having to taint yourself with code. The reason is that it's perceived as safer to buy something that works, or worked in the past - however badly - and patch it up. This is why software developers laugh at duct tape jokes.
At least Universe is generally sitting on some reasonable Unix box. Pity the people who ran PICK on native hardware.
Just more capacity. The NT4 box was just for convenience, it was what the developers had on their desks. The linux boxes were our first production environment, but turned out not to be powerful enough to handle everything when we got more traffic and the app got more complex capabilities. When we went to the e6500s it was actually a mixed environment. We had some things running on those e6500s, some things stayed on the linux boxes. Mind you, this could have been avoided by better planning, but java's portability let us do a bit of exploring first.
Baloney. I'm having a music download website developed -- it'll be online soon, I hope -- and one of my absolute requirements is that it *must* be free/open source software. Why? If my website ever gets big enough to threaten The Power (RIAA, BSA, M$FT, etc) then I'd begin to view proprietary software licenses as a distinct liability. The entire existence of the proprietary licensors depends on The Power, after all. They'll find some pretense to revoke my Flash license, say, or keep me tied up in lawsuits until I fold. Nope, it's FOSS for me, I can't afford *not* to do it that way. Am I paranoid? Or is it possible proprietary licenses could be used against an 'enemy of the state' such as myself? No, I'm not paranoid. The BSA busted schools in PA and Oregon for not having a piece of paper to go with every HDD contaminated with Windows, for crying out loud.
I recently posted a series of entries on the relative strengths of Java vs. .NET and make some suggestions on how Java might avoid being crushed by .NET.
problem with .NET is Microsoft is still encouraging bad development habits. I can tell you first hand from reading ASP.NET code written in VB that it is horrendous. Most of the examples included with .NET do not use good OO practices for the C# examples. The worst part is it encourages the same lazy hard to read coding practices. Without fixing that, it won't make .NET any cheaper, it's just another trick to milk more money from customers.
Hmmm... a few pages above there's a post consisting of the two phrases "You are an idiot" and "There is no IDE that comes even close to Visual Studio.NET" that's now Insightful.
And now here I'm obliged to repeat someone's useful response (that wasn't modded up) to an ignorant assertion (that was).
The practice of refactoring is well-established and reflects changes to the naming or structuring of the code that have occurred since it was created, so your comments about the initial organization of code are irrelevant. Apparently your beloved VS.Net is likely to offer some refactoring capability in a future release, which acknowleges the importance of this feature but puts it approximately 2.5 years behind Eclipse and IDEA.
A workflow system consists of process definitions with process steps that involve conventional programming, therefore if I'm developing a workflow system, I'm also doing conventional programming. An IDE allows me to deal with these aspects in one environment (hence "Integrated"), just as VS.NET allows me to develop GUI layouts and conventional programming in one environment. (Or are you suggesting that the GUI designer in VS should be a separate system?)
I fail to see the relevance of standalone diagramming tools in this context since their purpose is to produce diagrams (for people) rather than code (for computers) - something you are free to do regardless of your IDE. However, since you bring up the subject, I should point out that in Workshop the workflow diagrams ARE integrated and correspond exactly (via 2-way update) with the visible program code. Again, such features are light-years ahead of anything in VS.
I'm confused. You first deride my comment, and then you appear to agree with it.
My point is that by only looking at a language's version-1.0-time-to-market qualities, tradeoffs must be made. In the case of VB, the tradeoff is that VB is a closely guarded language by a single vendor, rather than the classical academically defined languages like C, C++, Fortran, etc. If Visual C++ goes away, there are other vendors who produce C++ compilers. If Microsoft stops producing VB compilers, there is no one to turn to. Since VB.Net is the next version of VB, and it requires a practical rewrite for large applications, then the previous language known as VB is dead, for all practical purposes. Few to no new applications will be written with the old language.
I don't care how bad your applications are written, odds are your mananagement would not rewrite the applications unless they were forced to by outside forces, because, as you said, the paying customers don't care about languages, they just want feature Y in product Z and they want it now. In this case, the outside force is the vendor who has essentially stopped advancing the compiler for the langauge your apps are written with, and you don't have another VB vendor to turn to.
And as far as developers enjoying the rewrite; beware of what you wish for. We are going through the same thing, and it has been almost two years of pain, beauracracy, and political wrangling. The Second System effect can easily take hold, since people are so afraid of making the mistakes of the old system that they overthink and over-engineer the new system until it collapses under its own weight.
A portable VM for Pascal ... maybe you could call the machine language for that "pcode"...? Wow, I wonder why no one ever thought of doing something like that.
Yes. Get yourself a cygwin setup. Create a Makefile win32 project in VS.Net. Set your PATH and other ENV vars in the VS preferences, then setup your makefile to use GCC. You will have to edit your makefile manually whenever you add to your project unless you write a plugin. Nonetheless, you will be smiling after your first project.
The IDE absolutely kicks arse. Most of the arguments here appear to boil down to VS.Net sucks because it's cool to hate Microsoft.
If you are running pure Linux and can't abide Microsoft for whatever reason, I suggest you get Anjuta. Anjuta is great for building Linux projects particularly of the gnome variety.
As a sidenote, I just finished a rather large project using JBuilder, and I must say that I like it very much. I still think VS.Net is the #1 IDE on the market, but for java, JBuilder is quite nice.
If I could mod you up, I would. Just today, I attempted to rename the project namespace for a .NET application. It took me about two hours to get everything fixed, the namespace is tied to the directory, and therefore references get hidden in various non-class files. The hidden references may not be necessary to straight programming, notepad/editplus style, but when they are wrong, they break the debugger in VS.NET.
If VS.NET had a good way to rename classes and namespaces, it would be a Godsend. Sometimes, you just realize that you were stupid in naming a class what you did, and that it would be so much more clear if it had a different name. I've worked with Eclipse refactoring, and I remember the first time... my jaw dropped, and I was like "This is fucking awesome!"
Refactoring is an excellent tool that should not be ignored, and is definitely not replaced by code outlining/regions. Those, OTOH, are really good for getting an overview of your code, and instant grokking after not touching for 5 months.
You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
I just did a job search on monster.com:
.NET programmers...
c# - 704 results
java - 4398 results
Yeah, there's just SO much more demand for
Hi.
.NET runtime, and the user needs to regasm your managed dll for COM interop.
I work in the developer tools division at Microsoft. Current plans say that my team will be supporting VB6 until the year 2012, longer than any other Microsoft product, and a notable rare exception to the stanard 7years-post-FCS policy that we just adopted.
VB is the most widely sold microsoft development product. AFAIK, It's got more users than the rest of Visual Studio combined. It is the bread and butter of millions of programmers out there.
VB6 isn't going anywhere because there is lots of legacy code out there, and lots of satisfied customers.
I have written several new applications with VB6, even though I was using VB.NET since before you had any idea it would ever exist and prefer it in generally all ways to VB6. I decided to use VB6 because the component would only be called via cscript.exe using COM latebinding. Making a COM DLL in VB6 is free, doing it in Managed code requires checking a box in your project, but the deployment scenario requires the
My team internally developed a major peice of VB6 code over the period of several years. It was re-written from scratch in VB.NET in several months, and roughly 1/3rd to 1/2 the lines of code. It's certainly faster and less awkward to refactor, as well.
In summary
1) VB6 was great, but VB.NET is better for almost everything
2) VB6 has a huge installed base and is incredibly critical to microsoft's target development audience. As much as we sometimes want to, we cant just "shut it off".
3) As someone who ported over 500 small VB programs to VB.NET _before_ there was the in-box migration tool, I feel qualified to speak on the portability and learning curve issues. Yes, there are issues, but going from VB6 -> VB.NET is less obtuse than going from say, VB -> Java.
4) As long as windows executes native Win32 PE executables (even via WOW64), VB6 isn't "dead". Apps will continue to work, and the same VB6 compiler will continue to run.
6) VB6 first shipped in 1998 on NT4. It has been tested against every subsequent Microsoft OS. I am friends with the people that do this testing. W2k3 wasn't allowed to ship until we verified that thousands of scenarios ran on it identically to how they ran in 1998.
My opinions are my own, and do not necessarily represent those of my employer.
I am baffled by these conflicts.
... there seem to be 10 choices for nearly everything.
.bat vs. .sh - not too painful but even that's gone now that I'm on OS X)
.NET deployment? How much downtime saved from moving off wormy Windows servers and onto Linux? (100 user Linux license * 10 CPUs + 100 user postgres license = total of ZERO dollars.) (Don't give us that "only if you don't value your time" malarchy either - Windows eats far more of my time in 3 months than Linux does in 2 years.)
With Java I have a huge open source community as well as commerical vendors. I have upteen choices for object persistance, IDEs, distributed infrastructure, graphics toolkits, widget toolkits, web tools,
If I run into a problem with a java API - 98 times out of a 100 it's already fixed or a work around identitfied. If there's fundamental design error in the tool - I've got 10 other choices.
I can develop and deploy nearly transparently to Windows, Mac OS X, Linux, Sun, etc... I regularly develop on Mac OS X and deploy to Linux and Sun with no hassles - none. (Before the PowerBook it was develop on NT4/cygwin and deploy to Linux and Sun and I had to worry about backslashes vs forward slashes, semicolons vs colons, and
Why would you sacrafice all of these choices and options? (Read about "Real Options" to see how these choices have concrete dollar values - sacraficing options is just throwing money away.)
I hear arguments like "we've already got COM developers" - Is it really that hard for them to learn Java? How much would two weeks of downtime cost for a shop of 20 developers? Figure 75k/developer (with overhead), that's $1500 a week - times 20 - 30k/week - times 2 - $60k (4% of the annual salary budget). Add to it about 3 months of 75% productivity (25% in month 1, 50% month 2, 75% month 3, 100% month 4) - that's another $94k. So hand wave a little and say that switching to Java will cost $150-$200k for a development shop with $1.5-2 million/annum budget. (Maybe add another $100k for training and what ever.)
That's the same cost as being 4-7 weeks late on a project deadline. When's the last time you did that?
A "real options" analysis would likely show the choices available in the Java world are worth maybe ten times that. Figure a company with $2MM dev budget has a $20MM-$70MM annual revenue, there's a good chance the flexibility from choices can make a 3-10% difference in revenue - an even better chance of 1-3% increase per year over 3 years. (I know that's not discounted but it's a back of the envelope thing not a 10Q filing.)
How much would you save on VB Studio licenses?
How much might you save by leveraging amazing tools like those used in Garsomke's continuous integration environment (see http://www.sys-con.com/java/article.cfm?id=1945)? Apache's projects alone are worth a great deal of money to a development shop - add in Source Forge and the value is down right spooky.
What else I wonder? (Let's not forget the simple freedom from Microsoft lock-in.)
What's the counter argument - that there are some incremental IDE features in VS Studio?
It seems simple - black and white (and green).