Java vs. Visual J++

My company develops a database software program and we want to upgrade to either Java or J++ for a programming language. Currently we only sell to Windows users, and do not neccesarily need to be able to go into other OS. Here is my question: The programmers want to go pure Java, and the management is talking visual J++. As product manager, I am not a programmer, but I want to hear opinions on what is better, and why. I will award the points to whomever can spend the most time, and give me the most coherent reasoning. Thanks!

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

J++ is both a language and a development environment. The language shipped with J++ is somewhat different from JDK shipped by Sun but not in the core (as far as I understand). So you should be able to use VJ++ as a development environment developing pure Java applications as long as you do not use Microsoft extentions. Microsoft's Java on the other hand does not support some important APIs which are part of JDK such as JNI (for interfacing between Java and C/C++) and RMI (for using Java Distributed Objects). (Microsoft support the same features with different APIs, proprietary to Microsoft).

I understand your programmers and personally would not use MS extentions. But MS claims that they have a better version of Java for Windows and if that is what you need you may not have sufficient arguments to win over your management position.

If you can demonstrate that you can develop a pure Java application and it will satisfy your requirements than you may have a strong case for not using Microsoft's stuff.

Management is very interested in (and I am not sure I fully understand this, but bear with me) COM and DCOM links. We have other products that we want to interface with, and they are using these connections.

I guess the other thing they are saying is that 'no one ever got fired for recommending MicroSoft' and so they are interested in traveling the safe road.

Are there any specific pros/cons to one or the other of these languages? I mean is one faster/slower, easier/harder, etc. I am really not convinced either way, but the decision is left to me and I need some hard facts for why I would go one way or the other.

You should not be talking about two different languages. It is the same Java language. Microsoft removed some APIs from it, added some of its own, but the core language is the same. What different is the compiler and the Virtual Machine. There are plenty of articles comparing speed of Java with different machines on different platforms. Sun is seriously commited to sppeding up their speed of execution, so I am not sure Microsoft is necessarily the fastest even on Windows.

In terms of easier/harder, again, the language is the same, so you are comparing the environemnts. I prefer Symantec's IDE, other people like Microsoft or Borland (Inprise). There is no simple answer. If you develop in J++ using standard Java you will be able to run it under JDK. The reverse may or may not be true (if you use JNI or RMI you will not be able to run in MS JVM).

If DCOM integration is essential, it might be that MS has a better way of integrating Java with ActiveX. I know J++ supports that intergration and it may be unique in this respect.

msmolyak has given you a lot of good information. To that I'd like to add the following:

Do a risk assessment! Every business decision implies risk and reward. A management decision made by stating "nobody ever got fired for using Microsoft" is glib and doesn't represent a business decision at all. Things to consider:

* Why Java in the first place? What reward does it bring for the risk of taking on a new development approach and language? Remember that MS' position can be described as "Java is a language - another way to write Windows applications", rather than "Java provides a way to write cross-platform applications with more ease than ever before". I personally believe Java is a great language. If mgmt. things they will receive better programmer productivity with Java, they may be right. But there will be a period of less productivity as the developers get used to the syntax, the chosen IDE, OO programming (if not already a core competency), etc.
* Will you EVER move to another platform? If so, I think you'll have to be VERY careful during development with J++. If you use COM/DCOM from J++, chances are that you'll have trouble changing platforms. There are bridges, but I'd not bet my mission-critical apps on them. If not, then use J++, as it provides very good integration with the Win32 platform via native API calls, etc. You're still using a superior language for development. Just be sure that the decision AND THE RISKS are documented.

Thanks for the good info....couple of questions:
msmolyak: You stated: "If DCOM integration is essential, it might be that MS has a better way of integrating Java with ActiveX." What does ActiveX have to do with it? Remember I am new to this....and just doing some initial research.

mithomas: I agree that is a very glib decision making reason, understand there is a lot more to it than that, but that seems to be what it boils down to. We are looking to go with an MS Access back end, and try to go down the MS path. We are using Paradox now and it keeps biting us. Not that there is anything wrong with it, it is just customer expectations. As to my question: You say that MS has bridges to other platforms, do you think they will maintain those? And what has their development schedule been like historically? Are they updating and maintaining their tools and language, or is this one of the things MS is not focused on? I guess I wonder if your opinion is that this is something MS will move towards, or try to draw people into something else. As they are doing with moving everyone to NT.

Just a terminology. My understanding that ActiveX is a component in COM/DCOM world lake JavaBean is a component in Java world. That is why when you want to integrate Java and DCOM stuff you may use JavaBEan/ActiveX bridge.

As for the other questions (mithomas, you are welcome to express your opinon), Microsfot provides bridges to other platforms only if they have to. If it were in their power they would make everyone use Windows. As long as they can generate revenues by providing bridges to ther platforms they will do it. But if you are developing for Windows only, why would you care.

Regarding schedules, Sun is unusally aggressive about making Java an enterprise client/server platform, not just a language. They create new APIs with terrific speed. They are making Java a great cross-platform development tool while Microsoft is busy making Java run great on Windows.

Another point is that Java lately has been shaping up as a server-side language. When it came out it was hyped to be great for writing client application. It is true if you are talking cross-platform, but on Windows you have other good alternatives.

Where Java's cross-platform capabilities and its set of APIs (EJB, JDBC, JNDI, RMI, etc) going to shine is in the server application market. I do not know whether it is relevant to your project, just keep in mind that Java is more than a tool to create client-side GUI applications.

Sorry, I wasn't very clear on my "bridges" comment. However, your interpretation of it still is a good question!

What I meant to say is that other products can talk to COM/DCOM objects (MS stuff) via bridges. I wouldn't bet the farm on this though. It goes the other way, too, but I'm even less sure about that approach. You ask "do you think they will maintain those?". Good question. Don't count on MS to do anything that isn't ultimately good for MS! This is the way they do business, and it's OK, but limiting. MS is EXECELLENT with new development technology releases -- for their proprietary systems. If you go full Microsoft, you'll get lots of technology support from them (remember, if you're using their tools you're developing for Win32, and that's good for them). If you go with another vendor, you'll find yourself mixing and matching, which is a downside of flexibility.

Long story short: Sounds like you're shop is dedicated to MS (Access back-end, COM/DCOM, etc.). That's fine. I came from a shop like that. MS has got excellent integrated development technologies that work together pretty darn well. VB is a personal favorite of mine. J++ has received excellent reviews for useability. Use MS tools and be happy. But your management has to understand that they're stuck with Win32 if they go down that path. If that's OK, then full steam ahead!

Good Luck!!

PS - I'll make a stab at the question you directted toward msmolyak: COM is an object model that is becoming the underpinning for everything in Win32 services. DCOM is COM enabled for transparent distribution over a network. ActiveX is a marketing term and spec for stuff built on COM/DCOM. Often, "ActiveX" as used, refers to controls and other binary components you plug into your apps. If you know COM, all else follows! There are lots of decent books about it. Check out "Inside COM", by Dale Rogerson.

VJ++ is such that it pretty much forces you to use the extensions, which makes for non-portable Java. If you don't use the extensions (very difficult, I hear, as you have to change some registry entries), then you'll have trouble running it on Windows.

VJ++ is NOT Visual.

If you want a pure 100% Java tool, I would suggest buying Inprise's JBuilder. http://www.inprise.com. This is THE BEST Java development tool on the market and has won many industry awards already.

If you do choose VJ++, I feel very sorry for your company. VJ++ will tie you to Windows...so why even use Java, use VC++ or something else that is native Windows.

Some other concerns might be the Distributed Objects approach. Why COM/DCOM? There are other means and standarts (I dare to say, even much more powerfull and well standartized than MS's alternative) like CORBA (www.omg.org) and JavaRMI, for example.
CORBA has some features like:
- different independent implementations that give you the freedom of choice.
- Platform independence - through Java.
- Language independance - the objects might be written in C++, Pascal and Java, and they will still be able to bind to each other because they speak one and the same unified language (IIOP).
- Scalability - achievable throug a set of services provided by the standart CORBA ORB.
- Very good performance
- Easy to use.
- and many more.

A lot of development products and platforms have already adjusted themselves to CORBA.
Netscape has an integrated ORB in their browser. Delphi is compatible. Java is very well integrated (www.iona.com).

The "No one ever got fired for choosing Microsoft" adage should not apply to Java development. Microsoft does not like Jave, would prefer there was no Java, and wants to break it via its own non-standard extensions.

The reasons why you are choosing Java are probably different than what Microsoft wants with Java. So, when approaching Java it is best to ignore Microsoft and look at all other tools.

This will be my last comment on this question, as it has now disintegrated into a religious argument (as could be predicted).

Ignore the religious side of the discussion for a moment, and keep business in mind. If the management of your company is SURE that they never want to be cross platform, and they'll always stay with Win32 and services such as COM/DCOM, then use J++. It's the best tool for building Win32-specific apps.

Java is a great language, regardless of how you target it. Even if you're only going to build Win32 apps, it's still a great language. Period.

If mgmt isn't sure about the platform, and think that cross-platform might make sense in the future, then consider another tool, since MS won't help you much in this area. Read all available product reviews, and get trial versions in house. JBuilder is certainly very good. It's the one I own. Keep in mind that all of the tools leapfrog each other very often.

Remember, no argument about technologies MATTERS until you're certain in what direction you want to move from a business point of view. Business requirements dictate technologies, not the other way around.

Well I think I have gotten enough to make me really confused! No just enough to show me some avenues that I need to take my research down. I appreciate all the comments that everyone added, and after much debate I would like to award the points to mithomas. Can you post an answer so I can give you your points?