As you are the tough Java Developers around here I would like to post my question here. Please be patient with me and give me some light to guide my steps...
I have been a software developer for the past 5 years. A couple of years ago the managers of the software development company I used to work for got to the conclusion that there was a war between two great superpowers: Microsoft vs. Sun Microsystems. They began to think that it was a good idea we to take a side, and at the end, intelligently, we took them both.
Then our company absorbed a smaller one of Java Developers and two new divisions were opened: one division for the budding .Net Developers and another for the brand-new Java Developers.
Most of us received an opportunity of participating in a project with either of these two technologies. Finally I was assigned to a financial project for a couple of banks in our country which use Java as their software development language. So as you might already guess, I chose the Java side.
While I was studying very hard this programming language I could notice two elites were beginning to take form at work: the Java boys and the .Net boys, as we used to call them. These guys do not like each other, you know. Being a Java boy or a .Net boy is like belonging to a religion; and if somebody of one of these groups says something bad about the others group technology; it is as if somebody call their mothers a bitch.
And do not misunderstand me; being part of one of these elites can be great. I am one of those who like to wear my Java T-shirt and my Java jacket, and drink my coffee in my Java mug.
However, since a year ago I have been working for another company. All this past year I developed with C++. Now they want to change to C#. They say they do not like Java because it is too slow. The worst part is that they are not the only ones who think that way. A couple of Java developers in my former job and couple of them in the company I am currently working for think so, too.
Some of them also say that Java is loosing popularity and it is being conquered by other languages like PHP and ASP. I did some research and found some statistics that show that is not exactly false.
In my country Microsoft is getting powerful. And while Microsoft does an efficient evangelization campaign, we do not even have a Sun Microsystems office over here. Microsoft is spreading; yet, Java developers are still better paid.
Some important institutions use Java in my country and it also seems that worldwide powerful technological companies have put some of their money into Java. I even felt happy to know that Sun Microsystems� stocks raised in price a little this month. I also see that the JCP is already working with Mustang and thinking beforehand in Dolphin�
But the point is that I need to choose a side. I love Java: I have been studying it hard the past year, I have more than 50 Java books on my library and I am subscribed to several Java developers� sites at Sun. I am even going to take the SCJP 1.4 this next month.
But, what is your opinion about Java technology? Is it really slow as they say? Is it really loosing popularity? Try to be objective, please. Consider that MS has a few good toys of their own and I know they will not surrender easily. They might share the world with Java but they will never surrender.
Please tell me what you think. I would like to feel confident that Java is the way to go. I would like to continue feeling proud of being a Java developer; but I do not like when people say these things about Java and I cannot make them shout up their mouth. MS .Net languages are also interpreted, it is not reasonable to think they could be faster� I know, I know, they just run on Microsoft anyway.
I do not feel afraid Java is going to disappear. That is unlikely to happen, at least not in the next 10 years�. And if the language evolves it will be around for a good time; and the Tiger release gives me faith and hope that things will continue this way for us Java developers. It just that I do not like the idea of thinking the MS has the best toys. I guess you understand: we all want to be with the team that is going to win this match.
I have passed the last five years learning new languages Fox, VB, C++, PHP, Java, C#... and I am getting a little bit tired of all that. I would like to learn something that is not going to change drastically from night to morning. I like Java very much, but is it the way to go? What do you see in our future as Java developers?
Whatever, I will really appreciate your opinions. [ January 23, 2005: Message edited by: Edwin Dalorzo ]
First of all, if you are an application user, will you even care what your application is written with? I guess the answer is no, you will not know whether the underlying programming langauge of the application is slow or fast. You care whether the application gives you reasonable speed. Your application can be slow even if you use the fastest programming language, if programmed wrongly.
One important thing to note about Java is its extensive library support and platform-independent nature. You can write an application that can be run on different operatiing systems. Well, you may argue that an equivalent will be a C# application over the HTTP protocol. As such, you can use the application as long as you have the web browser and internet connection. What happens when you do not have good network connection? What happens when your company finds that hosting a Windows Server is too expensive (C# got to rely on that). You will turn to hosting a web server on a linux machine, or at least for me I will use JSP and Apache tomcat (I am still a student who don't have money to play with).
Personally I am a 19 year-old student who had two years of Java exposure and recently a certified Java Developer. I tries to learn c++ and guess what, the foundation that Java had given me breeze me through the first tutorial of the langauge. Look at C++, been there for some decades, but there are people who still use it. There is no such thing as a programming language being out, it is only how you think you can use it that matters. Just remember don't stop at a programming langauge, be more flexible which I think you already are.
Is Java slow? Define slow... Sure Java is slower than C++ in some conditions, but in other conditions it's faster. For most applications it doesn't matter a bit which is faster because your average application spends 90% or more of its time doing exactly nothing while it waits for the user or some other input or for resources to become available. If an application runs for 10 minuts that's 9 minutes idle time. Maybe Java is indeed a few percent slower than is C++ for what you do. But that's still only a few seconds at most over that hypothetical 10 minutes your application runs.
And even if it were to run 100% of the time fully utilising the CPU all the time it's still add maybe a minute or two to the time needed to do what that C++ application does over a 24 hour period. Hardly something to loose sleep over...
Java WAS slow, but that was 7 years ago.
Java IS a lot easier to use and create software in, which is what many C++ people are afraid of. They're afraid to see their dominance in the application development industry challenged.
Java IS still less capable when it comes to direct hardware access, and this is by design. If your application uses things like DirectX or drives custom hardware Java may not be for you because of that (or you may have to rethink your architecture or seek a hybrid solution).
I was called only last week by an ex-colleague with a similar question, which direction to take a project he was given (which is to convert a traditional client/server application to a webbased application). He wanted to know whether .NET or J2EE was the best solution. After asking what the company has invested at the moment and what their plans for the new system are I advised him to use both J2EE AND .NET, J2EE for the frontend and .NET for the backend (in this case they themselves have extensive Windows knowledge and their existing backend is written in Delphi which can be used to generate .NET services from that existing code making a major rewrite necessary only of the frontend which will be deployed to outside customers who may have disparate hardware/software architectures).
OTOH if you want something that doesn't change and you do want to remain in IT, I can only tell you to crosstrain to PL/1 or Cobol. Maybe Fortran can sustain you until retirement as well but I wouldn't bet on it. As a Java person or a .NET person you'll have to continue to learn new things all the time. Maybe not entire new languages but new libraries and stuff are appearing all the time and will continue to do so for the foreseeable future.
Thanks for your replies, guys. As I told you I like Java very much. I do not mind to invest my time learning Java if people like you, experimented with the language tell me you are confident enough that Java is a competitive technology. That is all I wanted to know. I do not mind learning new libraries, or getting up-to-date with the changes in new releases. I just do not like the idea of changing from one language to another. I want to specialize, be the best in something... and I want that something be Java.
My suggestion is to not choose between any camp at all. If you want to specialize in something, concentrate more on the principles behind it.. After all, software engineering remains somewhat "constant".. The languages are nothing more than the syntax..
At the end of the day, C# is a great language. So is Java. And PHP too.
They're tools, just like screwdrivers... To see a company divided up into "java boys" and ".net boys" seems like having a "philips head" vs. "flat head" turf war. Trying to figure out which one is the fastest deserves its own analogy� Perhaps trying to determine which model of mini-van is the best suited for nascar? If speed is the concern, you probably shouldn�t be using either.
Try to seek out the best tool for the job. It's not always about speed or efficiency... Consider the customer, the company politics, the training resources available, the amount of time available, etc.
I personally tend to lean towards .net when it comes to web service/xml work or extravagant GUI work (within windows at least...)
If its more server orientated and/or I have a higher need for cross platform (true cross platform, not MS cross platform), then it's java all the way...
Just my random two cents� [ January 31, 2005: Message edited by: Alexander Rudloff ]
Consider the market. Java has a future, .Net has a future, just because, aside from creating new apps, both are constantly used to replace "old" systems.
Enterprise level development is strongly network related. Don't choose a speciality/technology/language that is not natively web oriented if you don't want to end up in niche development.
As for choosing between java and .Net, it mostly depends on your state of mind. Do like to depend on One vendor only (comfortable: if something doesn't work blame it on MS), or do you like the freedom to choose between different vendors/opensource even if that sometimes makes things more complicated...
Speed and popularity are in my opinion irrelevant. How "fast" and how "popular" is Cobol? Customers are still using it though, see what I mean?
Who cares who wins or who loses: in that kind of "battle" with that kind of scale there is never a winner or a loser, there are only agreements. Do you think IBM and Oracle would so massively invest $$$ for so many years now in Java if was so much a risk?
Tired of programming? Pass your J2EE architect certification and become a manager... I see the future of developer as not being developers anymore... evolve to higher grounds, go for management.
--- "Furthermore it is my view that in the MS world they have to repeat things until either people start believing it, or die of boredom."