JAVA vs. The World
willhelm asks:
"I have a friend--and his boss, in a stroke
of wisdom, has asked for any kind of "hard
numbers" comparing Java to VB. Java being
an interpreted language, is probably much
slower than VB. However, theory and
high-faluttin' rhertoric mean nothing to
him. So I looked around and didn't find much,
probably because there aren't a whole lot of
applications that were written in Java and
some other language. Are there any studies
on performance of Java applications vs.
other common application programming languages
like C, C++, Delphi, VB and others like
them?" Let's try and answer this one
without rabid advocacy, please!
Tell your boss to look at Eiffel instead. Its fully compiled, and can do lots of optimisations that Java cannot. In particular it has proper generics, which mean that you can put things in a list without having to conditionally cast them back from Object.
It also has design by contracting built in, so you can get all the advantages without having to use some crummy preprocessor hack, and all the libraries have it as well.
All the library classes are fully regular. There is no wierd stuff with String having operators that you can't define in standard Java.
See (for example) Eiffel Liberty Journal. This has links to pretty much everything else Eiffel-related on the planet.
Paul Johnson.
Hello,
Well, for one person, nearly everything I use at work
that has been release under UNIX and WindowsNT
has (or will have in a month) Java front-ends for it.
What I mean by Java front-ends...
o HP OpenView (network management software)
This tool is available under X as well as Win32.
There was a vendor who released a package
which will add on-to the UNIX HP OpenView
Server to allow users to monitor thousands of
nodes using a web browser and Java.
The implementation from the third party was
SO CLEAN that the Java version ran just as
fast as the C++ version from HP, exept you
could run the Java version over a dial up
connection (while the C++ version requires
an ethernet to connect remote maps... or
at least a T1 line for reasonable use...)
o Remedy Action Request System
Remedy is releasing a Java client for their
Action Request tool, the world-wide
preferred help desk management framework.
This means, if you have a help desk in your
company, they use Remedy. If they use
Remedy, expect their clients to be running
in Java shortly...
When? Not sure, it is projected to go production
in 1st or 2nd quarter of this year - I am waiting
to use it in my help desk facility.
o Tax programs
I did my tax programs in Java last year...
it was an off the shelf application (bought
it at OfficeMax - I did not realize it was
a java app until I noticed the trademark...)
o Most RDBMS's are including Java as
another language to produce code which
can be resident within in the RDBMS
(Oracle is an example...)
Soooo, if you need to code rules in an
RDBMS so when a row of data is
deleted that it will delete a similar row from
another table to keep the stuff consistent,
you have the option of coding in Java
instead of learning a proprietary language.
o Oracle Developer's Kit allows you to
drag and drop build Java applications
instead of drag and drop build X and
Win32 applications...
Well, those are the things that I am involved in
at my office. We use a variety of platforms
(Sun Solaris, NCR UNIX, Linux, and NT
Servers, Sun Solaris, Linux, and NT Desktops,
NCR UNIX and Linux Web Servers, and a
Linux Firewall...) and if we could code in Java,
it is a big help.
The other two languages we use to code
apps in is Shell, Awk, and Perl... we have
a VB app (that was a PIG) that we are
porting to Perl right now, possibly Java
later on. We also have one app written in
C... which may get ported to Java...
Visual Basic is not all that fast... I would
say it is not much different than Java,
depending on WHAT you are doing in it...
Visual Basic with ODBC, for example,
is really a PIG. Don't even think about
placing MS Access or MS SQL Server
under it unless you do not care about the
speed or memory requirements of your
machine. If you have money to burn and
you do not care about upgrading your
apps and your hardware in order to
keep up your OS, I guess it really does
not matter.
Most of the web server apps
I have built have been in "awk" and they
were as fast in "ksh" and "awk" on a 486
with Oracle as they were running on a
Pentium with MS Access and VB.
I have upgraded my OS 3 times and
then moved my application to a
completely different OS/computing
platform (Intel based NCR UNIX to
SPARC Sun Solaris) and never had
to change my application AT ALL
(over a 4 year period of time.) This
is what we are expecting to get
out of the Java platform and it looks
very promising.
I hope this helps...
David J. Halko
NCR Integration Specialist
P.S. - get app info on Java from
www.jars.com
www.developer.com
www.gamelan.com
And I would suspect that the products, documentation and support channels for Java are MUCH better.
Check out JavaWorld - they have done lots of performance tests in the past including ones with other languages (C/C++ I think).
Sorry, but anybody developing cgi's in ksh needs their head examining. I love ksh/bash/zsh, but they are totally inappropriate for cgi use because it's so bloody hard to make them secure. There are so many different levels of expansion you cannot protect against them all properly. And doing quoting correctly is a nightmare.
Also, because there are so few features builtin to those languages (compared to say perl), you will probably find that the script is significantly slower in it's runtime.
See http://www .idg.net/idg_frames/english/content.cgi?vc=docid_9 -116665.html for a comparison.
"The invisible and the non-existent look very much alike." -- Delos B. McKown
IMHO, VB & Java are both about equivalent in terms of rapid development.
Java, however, is object oriented. In general, I would say this gives Java a *huge* leg up. However, if your developers are not familiar with OO technologies, I would suspect this would be a disadvantage rather than an advantage. OO technologies make large-scale app design *much* easier, if and only if the OO design is done well. Java makes OO design much easier than it is in C++, but OO design still requires skill.
That said, I have found that interpreted Java (which you should never have to use) runs about 1/100th the speed of compiled native code. JIT (Just-In-Time) compilers run about 1/20th to 1/10th the speed of compiled native code. HotSpot, the dynamic optimizing JIT that Sun will soon release, is hailed as the Holy Grail for Java, in that it is *supposed* to provide something like 1/2 to 1.1 times (yes, faster) the speed of native code. In my experience with pre-release versions, it quite simply doesn't cut the mustard.
Based on my experience with Java (my company sells an SDK for doing high-level 2D & 3D graphics), the main slowdown in JIT'ed Java code is that array boundaries are still checked for every array access. I have seen tests where they turn off array bounds checking in the JVM, and the machine runs about 10x faster. However, the type of code I write & maintain do tend to have tons of array accesses in them, so your mileage may vary.
All told, I think Java is an absolutely superb language. However, the speed sucks. Furthermore, the compilers available for Java still don't support Swing and/or AWT, the GUI interfaces for Java. As such, they are really only useful for server code, not client code.
--Be human.
I think it could be the other way around. Don't have any experience with big projects in VB but I know that even if it may be faster to develop in VB at first, it will be sooooo much harder to maintain. If there will be code changes at later date these will be much easier and faster to implemetent in Java code.
Several compilers exist for Java, so I suspect there is no speed advantage to either. Java has two advantages: it works on non-M$ platforms, and it isn't a hodge-podge of programming mis-paradigms. I see no advantages for VB.
--
Infuriate left and right
Have a look at the JVM built into OS/2 (v1.1.7a is the current version) of if you are stuck on Windoz then try IBM's new Win32 JVM (v1.1.7). These JVMs are in some cases 2 times faster then Micros~1 JVM and have been shown to be faster then TowerJ's compiled Java. These JVMs both have JIT's and it looks like they may just beat HotSpot if it ever ships. IMHO
"Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
I think I worded my question somewhat ambiguously.... I've actually programmed in all of these languages. I did my thesis, half in Java 1.0 and 1.1.x and half writing in C with VC++ with the Win32 API and all that jazz. And I've been doing some programming in VB since they released v.1.0 all those many years ago.
So I wasn't really looking for a this languag vs. that language kind of thing. I was looking to see if there were "studies" on performance between Java and other languages.
I'm looking for "studies" because Java _is_ in flux and changes pretty rapidly. I just want to know about performance.
--willhelm
I think you can develop big
programs faster with Visual
Basic
There was a BYTE article a while back, that spoke of Java someday approaching to speed of compiled C++. And there is a native compiler (TowerJ I thinkI that is fast. But VB is still faster than Java.
I think the javalobby had the link to the speed tests, but it was not in comparison with VB or any other language.
It misght not be too bad an idea to pose this question to them.
Woe be on to them, all who rise against poor people, shall perish in a the end. Buju Banton
Oh pooh !! :)
I am an Eiffel developer and we are not rare.
It is Eiffel jobs that are lacking. And while
Java programmers might be a dime a dozen, beware
dime-a-dozen quality. Eiffle is not the buzzword
dejour. To my estimation, that recommends it.
And Eiffel attracts a rather quality driven
user/developer base. The commercial products
are mature and well supported.
Some links:
Visual Eiffel:
{Tight Win32 native code, some RAD tools}
http://www.object-tools.com/
ISE:
{Large corporate projects, platform
independence, various libraries}
http://www.eiffel.com/
SmallEiffle (GNU):
{GPL release, helpful community,
fast--very fast}
http://smalleiffel.loria.fr
ELJ:
{Eiffel Libery Journal, online magazine,
all the other links you might want}
http://www.elj.com/
-- Jeffrey Straszheim