I'm a newbie in Java world and am currently learning java and have previous experience in microsoft technologies.
I have certain issues/confusions relating to java which i want to get cleared, so kindly bear with me
1. As far as i have learnt from previous experiences, developing applications using Microsoft technologies is much more easier than Java technologies than why there is so hype using Java technologies? i understand that Java code is platform independent (portable), but besides this feature is there any other incentive derived using Java?
2. Desktop applications developed using AWT/Swing are so slow to load and don't have a good UI controls library as compared to microsoft applications who have an excellent IDE. So why use java?
3.I personally have not seen many(or should i say "any") good java applications. Mostly all the applications that i use on my PC are somewhere developed using microsoft platform. Then why is that it is considered a hot technology? I researched a lot on many leading job sites and they all are choking full of high paid java jobs.
I'm really surprised that then what all these java jobs are for?
Can somebody tell me what's the most practical application of Java today?
i mean what kind of applications are developed using java in the real world?
Is it mostly used in creating database-driven dynamic websites or in creating desktop applications?
It's not that i'm here to talk about and compare it (java) to MS technologies. I just need to know just why there is so much hype for java, what are it's practical applications and what kind of applications are developed using Java (both desktop and server applications)
I would really appreciate if experts and professionals in this field could throw some light on my queries.
That is most likely not your real name. Please change your display name. See the JavaRanch Naming Policy. We take that policy seriously around here.
Your questions indicate that you're focusing on desktop GUI applications. That's not the only field that Java is used for, in fact I think it is not even the main thing Java is used for. A lot of companies use Java for server side software, which has no desktop GUI. It's also used for a lot of web applications, but the GUI is in HTML and related technologies there.
So why choose Java for server applications instead of Microsoft? One reason that's important for many companies is that they don't want to be tied to one vendor (Microsoft). When you use Java, you have more choice for the operating system to run it on (Windows, Unix, ...) and you have a lot of choice for vendors of J2EE application servers, for example.
i don't know if the intention of your question is ironical or not. but here are my 2 cents:
as you found out about that many job vacancies in java, you might just continue reading those job discription. this should give you a pretty good idea about the fields java technology is used in.
"windows desktop applications" is just a small piece of the cake. and as the name implies - it's pretty os-specific, so java wouldn't usually be the first choice. what are the java applications on my desktop? azureus, jedit, eclipse, to name a few. just typing this message in a firefox window, which is c++ application (afaik), btw - non-java and non-microsoft.
hope it helps,
Our Policy requires a real first AND last name. We do allow folks to use an initial for their FIRST name, but not the other way around.
Comparatively, Java runs more slowly than C or C++, but applications are developed more quickly. This is because you don't have to chase down pointer bugs and memory leaks in Java. For a number of reasons (array access, garbage collection, etc) Java will run more slowly than C or C++, when comparing desktop (non-networked) applications. The speed difference becomes less of an issue in networked applications, because most of the time is spent in network access, as opposed to running the application.
I used to be a game designer in the 1980s. Most commercial PC games are written in C, C++ with assembly subroutines for speed. There are few sizable commercial games written in Java, but many online arcade games are written in Java (see www.popcap.com for examples).
In business applications (enterprise-wide), speed of execution is not the typical factor determining success. All other things being equal, the ability to develop, debug and release an application more quickly in one language than another can be a significant value.
When developing applications for .NET, you are forced (effectively) to rely on a single vendor for the operating system and the tools (Visual Studio). You have your choice of language, but not much else. With Java, you are limited to a single language, but can select from a number of vendors for development tools, operating system, etc.
With SOA and Web Services becoming more prevalent, .NET and Java have more ability to co-exist than in the past. No longer is a company forced to choose one or the other.
I find each to have their strengths and weaknesses. If I was writing a PC game, I would choose C++ for the speed. If I was writing an enterprise business application that was mission-critical, I would pick Java.
To your question about why use Java ... Java fans are willing to climb the learning curve to get more power and flexibility. They also value getting closer to "object oriented goodness" to manage dependencies and change in their systems with the goal of better long term cost of maintenance.
I haven't had any hands on with C# but I think MS recognized the need for a middleground between VB simplicity and C++ complexity and followed Java. We might say only after being shown the value of this space by Sun, but that doesn't matter that much today. Chosing Java over C# now is probably a matter of wanting to be cross-platform and have a choice of vendors. I try not to give Bill Gates any money if I can help it, so that factors in, too.
Originally posted by Tom Fulton:
[QB]Having worked in both the MS C++ environment in the 1990s, and in Java more recently, here is my $0.02:
Comparatively, Java runs more slowly than C or C++, but applications are developed more quickly. This is because you don't have to chase down pointer bugs and memory leaks in Java. For a number of reasons (array access, garbage collection, etc) Java will run more slowly than C or C++, when comparing desktop (non-networked) applications.
This used to be the case, but it's really not true anymore. Today's modern Java virtual machines have so many clever tricks such as just-in-time compilers, very smart garbage collection algorithms etc. that the speed difference between Java applications and C or C++ applications is minimal.