Because pretty much the main drawback of Java is that it severly limits which platforms you can distribute to, ironically.
Let's assume for a second that you are correct, and Java limits the platforms you can distribute to. Tell me again exactly how GCJ improves on that?
The only other option is distributing a 50 meg JVM with every app
The JRE is 13 MB last I looked. And you only have to download it once and it works for all your Java apps. Most Java applications are offered in a package both with and without a JRE. For example DbVisualizer (I wholeheartly recommend this database tool, very good and supports pretty much all databases) and IntelliJ IDEA (the best development environment ever).
and increasing support costs by having to walk people through tedious installation procedures, for the JVM and your app.
The apps I showed as examples are one-click installable. Most others are too. Your statement was completely wrong and should have had a huge FUD warning sign all over it.
If you can compile a native binary, you can distribute it to any binary compatible platform, regardless of what other software they have installed.
GCJ requires the GCJ runtime libs last I messed with it. Exactly how is this different from installing JRE?
You don't have to explain CLASSPATH to your users.
Read the documentation on the Java site. Use of the CLASSPATH environment variable has been stringly discouraged ever since the 1.2 days. I hardly ever use it myself, although it's nice to have if I need it (mainly when developing and trying out different libraries).
You don't have to explain why they can't type "java filename.class", but instead must type "java filename".
I have a better solution: Just double-click on the app! Yes, can you believe it? Ever since 1.2 there has been support for executable JAR's. When you install Windows.jar files are automatically associated with the Java runtime so that you can double-clik on the app to start it. If you have the stupid "hide extensions" feature enabled it looks just a normal app. I believe MacOSX does the same (although I haven't tried). Enabling the same in Nautilus is just a couple of mouse clicks away. From the command like you do have to type "java -jar the_application.jar".
GCJ is the only hope Java has of actually being more than an acedemic curiosity, and "something that Sun used for a few apps".
Maybe you should leave the academic environment for a while and realise that Java is heavily used for developing very real and existing applications in Java. Also check out the statistic on programming language usage with PostgreSQL. I'm not so sure I should believe your asstertion that Java isn't used oustide of academic institutions.
Are you even aware of the number of web sites exist whose server code is completely written in Java? Most likely you visitied a couple before you came here today.
In general, GCJ compiled code is slower than the smae code running in the JVM. The only speed advantage comes from the startup times.
Often the JVM will out-perform GCJ with a factor of 3. Check out the numbers on this page.
I fail to see why people want to run a GCJ compiled evrsion of a development tool and run at at one third of the speed of the JVM, just in order to save a few seconds of startup time.
I believe such a shell has already been written. And yes, loading a Java class and execute code in it is a lot faster than starting up an external application.
You can't expect the average slashdot reader to understand these things too. It's much "cooler" to complain about Java speed and it is to actually learn somehting.
These kinds of discussions always occur whenever Java or IPv6 is the topic. I remember back when I was young we actually embraced new stuff, especially new stuff that is cool, and useful, and... well I've talked for too long.
How about a small device that you embed in your bag, your wallet, and whatever valuables you carry around with you. If someone steals it (or you forget it) some other device that you still carry with you will sound a beep.
This could be helpful both against pickpockets and easily distracted slashdotters.:-)
"Hello, we've noticed you don't pay a television license. Do you have a TV?" "No" "We detected a TV from our van, inside your property." "No you didn't. Must be a mistake." "Sir, I can hear [insert name of crappy US sitcom here] theme coming from inside your appartment." "You must be imagining it." "Sir, if we need to, we can get a warrant to enter the premises and be back within the hour." "No you can't." "Damn you right. We can't. But if you don't pay your license we'll taunt you again!"
The television license inspectors do not have the right to enter your house unless you admit them. And they would not get a warrant even if they tried. Only crimes above a certain severity can give them a warrant to enter your house.
On the CPU's I've programmed on, a NOP takes from 1 byte (6802), to 4 bytes (SPARC).
Your program would take 50 bytes on 6502, 100 bytes on M68K or 200 bytes on SPARC. All of these number are greater than or equal to the number of lines in the program.
But I'm babbling... Most likely becuase I really have nothing else to do right now... I am perfectly aware of the fact that you probably argue that the series of NOP's will be optimised away. Assuming it is, your program will then end up zero bytes in size, and disassemble to zero lines of code. 0 is not greater than 0.:-)
And now, I believe I have said everything that is to be said on this subject, so I'll try to stay away. Thanks for giving me something to do when I was bored.:-)
Dynamically linked libraries do not add to the size of the binary, and they will not be part of the disassmbly.
Unless of course you want to include the libraries in the check. But in this case the libraries themselves are a part of the code base that needs to be analysed.
Remember that the only thing I objected to was:
A small program that prints few lines written in Visual Basic, might take hundreds of kilobytes space.
Hundreds of kilobytes might mean even millions of lines of assembly code.
As for the libraries, their whitepaper (you did read it, didn't you?) says that it does have knowledge of the libraries so one would assume that it doesn't perform a full scan of the libraries. Unless, of course, you want that, but then again, it would have to be included in the byte count of the code base to be analysed.
DISCLAIMER:
My original post in this thread was written when I was in a personal state in which no one should post on public forums. This caused me to blow things out of propotion. I still claim I'm correct, but I really should have been more polite. I'm sorry about that.
Secondly: Do not take me for a proponent of Bugscan. I think it might be a good idea, but only for the developers of a product as part of their test routines. Considering how easy it is to write a secure routine that will trigger their check, placing it in the hands of the end users might not have the desired effect.
Of course it's possible to write a one million line of code routine which is never executed, which is then completely optimised away.
But... It's competely irrelevant, since the code analyser works on the generated code and in this case the diassembly will end up being zero lines of code, or somehting very close to that.
Before you try to look all cool and slashdotty, please reply to this post and give me a simple example. Should be easy, huh?
All right. So one again show me a single example of a case where you have a piece of binary code, N bytes in size, which, after dissembly, becomes N+X where X>=1 lines of assembly code.
I'll tell you what: It's impossible. And if it is, then I'm sure you will have no problem giving a single example.
And remember: the ORIGINAL size of the source is irrelevant: We're talking about diassembled code here, since that is what the analyser is working on.
All programmers know that high level languages create very large binary files. A small program that prints few lines written in Visual Basic, might take hundreds of kilobytes space. Hundreds of kilobytes might mean even millions of lines of assembly code.
Really?
Most assembly language representations use one instruction per line.
So, in order to get a million lines of code out of a 100 KB program, you'd need a CPU which has instructions less than one bit in size(!).
There are other flaws in your reasoning, but the above example should be sufficient in proving that what you say should be taken with a little grain of salt.
They suck for Flight Simulators as well. Just look at the horrible abomination which is Microsoft Flight Simulator (and Combat Flight Simulator) compared to the the stuff rolling out of russian software development houses: IL-2 Sturmovik and Lock On: Modern Air Combat.
I was so hoping you'd suggest "The Sims - Tomb Raider Edition"
Re:What happened to Fahrenheit?
on
OpenGL 1.5
·
· Score: 3, Insightful
Farenehit was a great success, actually. Not many project succees in doing exactly what they set out to do.
Microsoft said that Farenheit would be the new standard 3D API and replacement for DirectX, and they managed to get SGI on board on it, which of course was the only purpose.
Remember that at this time DirectX was hopefully behind OpenGL, and Microsoft needed to make sure that OpeNGL development came to a standstill for a year or so while they were improving DirectX. After they had suceeded with that, it was time to kill Farenheit and that's what they did.
When will companies learn? There is no way you can enter a partnership with Microsoft and come out on top.
Official Java bindings, finally
on
OpenGL 1.5
·
· Score: 3, Insightful
It's great to see that the Java bindings will become "official". Anyone who messed around with Java3D knows why this is a good thing.
Maybe this would be possible to program on the newer Java-enabled phones?
Morse conversion as a MIDlet? Sure, no problem.
Some phones can even register local Java applications to listen for SMS messages with a certain MIME type (you did know that all SMS messages have a MIME type, didn't you?) Just find the MIME type and encoding for messages in morse code.:-)
It will be just as intelligent as creating a "web browser key".
Why is it that while MS and friends add more and more idiotic keys that you never use, they sitll haven't added they keys Sun had more than 10 years ago? I'm talking about the Cut, Copy and Paste keys of course.
Everything you wrote was pretty good up until the last scentence. Who do you think built it then?
The people back then weren't stupid. In fact, they were as smart as we. Just because we can't figure out exactly how something was made, doesn't mean it couldn't be made.
Don't underestimate a firm comittment to do something, coupled with tens of thousands of people to do the hard work.
On my XP parition can can find: c:\Program (swedish version).
My administrator account (and hence also it's home directory) is located in c:\Documents and Settings\Administratör (yes, that's an "ö").
I have a background image called c:\WINDOWS\Solfjädrar.bmp (Sunfeathers.bmp in the english version?)
Oh, by the way. I also have a directory c:\Program Files\ because some (reasonable?) programmers believed that Microsoft weren't so stupid as to localise system files.
Are you even aware of the number of web sites exist whose server code is completely written in Java? Most likely you visitied a couple before you came here today.
Also, where are the benchmarks to back up your claim?
Often the JVM will out-perform GCJ with a factor of 3. Check out the numbers on this page.
I fail to see why people want to run a GCJ compiled evrsion of a development tool and run at at one third of the speed of the JVM, just in order to save a few seconds of startup time.
You can't expect the average slashdot reader to understand these things too. It's much "cooler" to complain about Java speed and it is to actually learn somehting.
These kinds of discussions always occur whenever Java or IPv6 is the topic. I remember back when I was young we actually embraced new stuff, especially new stuff that is cool, and useful, and... well I've talked for too long.
This could be helpful both against pickpockets and easily distracted slashdotters. :-)
In sweden, it would sound like this:
"Hello, we've noticed you don't pay a television license. Do you have a TV?"
"No"
"We detected a TV from our van, inside your property."
"No you didn't. Must be a mistake."
"Sir, I can hear [insert name of crappy US sitcom here] theme coming from inside your appartment."
"You must be imagining it."
"Sir, if we need to, we can get a warrant to enter the premises and be back within the hour."
"No you can't."
"Damn you right. We can't. But if you don't pay your license we'll taunt you again!"
The television license inspectors do not have the right to enter your house unless you admit them. And they would not get a warrant even if they tried. Only crimes above a certain severity can give them a warrant to enter your house.
Your program would take 50 bytes on 6502, 100 bytes on M68K or 200 bytes on SPARC. All of these number are greater than or equal to the number of lines in the program.
But I'm babbling... Most likely becuase I really have nothing else to do right now... I am perfectly aware of the fact that you probably argue that the series of NOP's will be optimised away. Assuming it is, your program will then end up zero bytes in size, and disassemble to zero lines of code. 0 is not greater than 0. :-)
And now, I believe I have said everything that is to be said on this subject, so I'll try to stay away. Thanks for giving me something to do when I was bored. :-)
Well that I agree with.
Unless of course you want to include the libraries in the check. But in this case the libraries themselves are a part of the code base that needs to be analysed.
Remember that the only thing I objected to was:
As for the libraries, their whitepaper (you did read it, didn't you?) says that it does have knowledge of the libraries so one would assume that it doesn't perform a full scan of the libraries. Unless, of course, you want that, but then again, it would have to be included in the byte count of the code base to be analysed.DISCLAIMER:
My original post in this thread was written when I was in a personal state in which no one should post on public forums. This caused me to blow things out of propotion. I still claim I'm correct, but I really should have been more polite. I'm sorry about that.
Secondly: Do not take me for a proponent of Bugscan. I think it might be a good idea, but only for the developers of a product as part of their test routines. Considering how easy it is to write a secure routine that will trigger their check, placing it in the hands of the end users might not have the desired effect.
But... It's competely irrelevant, since the code analyser works on the generated code and in this case the diassembly will end up being zero lines of code, or somehting very close to that.
Before you try to look all cool and slashdotty, please reply to this post and give me a simple example. Should be easy, huh?
I'll tell you what: It's impossible. And if it is, then I'm sure you will have no problem giving a single example.
And remember: the ORIGINAL size of the source is irrelevant: We're talking about diassembled code here, since that is what the analyser is working on.
First of all, comments are no part of the "LOC".
Explain to me again, how a 50 byte program becomes one thousand lines after disassembly. You're talking out of your arse.
Most assembly language representations use one instruction per line.
So, in order to get a million lines of code out of a 100 KB program, you'd need a CPU which has instructions less than one bit in size(!).
There are other flaws in your reasoning, but the above example should be sufficient in proving that what you say should be taken with a little grain of salt.
They suck for Flight Simulators as well. Just look at the horrible abomination which is Microsoft Flight Simulator (and Combat Flight Simulator) compared to the the stuff rolling out of russian software development houses: IL-2 Sturmovik and Lock On: Modern Air Combat.
I was so hoping you'd suggest "The Sims - Tomb Raider Edition"
Microsoft said that Farenheit would be the new standard 3D API and replacement for DirectX, and they managed to get SGI on board on it, which of course was the only purpose.
Remember that at this time DirectX was hopefully behind OpenGL, and Microsoft needed to make sure that OpeNGL development came to a standstill for a year or so while they were improving DirectX. After they had suceeded with that, it was time to kill Farenheit and that's what they did.
When will companies learn? There is no way you can enter a partnership with Microsoft and come out on top.
It's great to see that the Java bindings will become "official". Anyone who messed around with Java3D knows why this is a good thing.
Get a modern phone and write some Java code to do this. And yes, you can control the vibration using these API's.
Some phones can even register local Java applications to listen for SMS messages with a certain MIME type (you did know that all SMS messages have a MIME type, didn't you?) Just find the MIME type and encoding for messages in morse code. :-)
Why is it that while MS and friends add more and more idiotic keys that you never use, they sitll haven't added they keys Sun had more than 10 years ago? I'm talking about the Cut, Copy and Paste keys of course.
The solution is called IPv6. It solves betty much every single problem of IPv4. Why on earth are people so afraid of change in this respect. Huh?
And all this on slashdot which usually is filled with technology freaks and early adopters.
Everything you wrote was pretty good up until the last scentence. Who do you think built it then?
The people back then weren't stupid. In fact, they were as smart as we. Just because we can't figure out exactly how something was made, doesn't mean it couldn't be made.
Don't underestimate a firm comittment to do something, coupled with tens of thousands of people to do the hard work.
I have absolutely no idea what you were trying to say. However, I think it's a good thing.
On my XP parition can can find: c:\Program (swedish version).
My administrator account (and hence also it's home directory) is located in c:\Documents and Settings\Administratör (yes, that's an "ö").
I have a background image called c:\WINDOWS\Solfjädrar.bmp (Sunfeathers.bmp in the english version?)
Oh, by the way. I also have a directory c:\Program Files\ because some (reasonable?) programmers believed that Microsoft weren't so stupid as to localise system files.