warm start (after having been run recently) was 5 seconds which is acceptable but not brilliant for a small app.
JEdit is not a small app. I have just opened up Kate (an equivalent programmer's editor for KDE). It took 10 seconds (first time of opening), and then 3 seconds after that - equivalent to JEdit. I am working with a KDE desktop, so Kate should have far less to do that JEdit.
It seems to me that people are having different sets of standards for Java applications. Because it is 'Java' then delays that they would not notice or care about in other applications are simply labelled 'unacceptable'. For example, I have just tried to open a Gnome image viewer on the same PC. It took 4 seconds - longer than JEdit.
As far as I can see, the evidence is clear and available to anyone with a PC who is willing to try it - Java applications don't take longer to start than other apps, but there is some perception that they do. How this perception is overcome, I don't know.
this lack of a standard vector graphics format also means that afaict there is no way to copy/paste vector graphics from the system clipboard without using custom native code.
This is a reasonable comment, but nothing to do with the size or speed of Java programs. If you want to use a standard graphics format, there is nothing to stop you from doing so. There are plenty of postscript handling libraries for Java:
That's probably true. On the other hand, that's mostly a marketing feature rather than a true technical feature.
Not really - it is something you can definitely rely on. If something is labelled 'J2SE 1.5' or 'J2EE 1.4' you know exactly what you are going to get. The importance of this can't be overstated.
I mean, one could certainly draw a circle arround the APIs that are shared between the.NET library and the mono library and say "this is the standard multi-platform library". It's just not particularly in Microsoft's interest to highlight those APIs.
But this matters - I'm sure someone could do this, but no-one has, and unless Microsoft do this, how can anyone be sure what APIs really are cross-platform (and certified and tested as such), and what will remain so? When you are starting a project that may take years to develop and which you may expect to remain active for a decade or more, having multi-vendor backing for certified APIs can be a real benefit..NET (and C#) don't provide this, no matter what their technical benefits (and in some ways they are superior to Java).
starting even the smallest java gui app from cold (no jvm already in cache etc) takes noticable time. starting a similar app written in a traditional language is instant.
No. I have just tried it. A simple non-GUI java app can start up in a few hundred milliseconds.
As for 'traditional language is instant' - how long does it take Emacs to start?
iirc java now works by allocating up to a limit set at vm start time and doesn't start collecting garbage until that limit it reached. so unless you use special settings on the vm command line java apps will end up using a lot of memory.
No. You can set the memory to whatever you like. You don't have to use lots of memory.
because if you are using say 5 small java apps at once thats probablly half your memory gone already not counting any other stuff that needs memory.
Let's do some math. Say you allocate 32MB for even a moderate java program. 5 x 32 = 160MB. Typically PCs ship with 512MB. Doesn't look like half the memory to me!
Lets actually a program. I open up Jedit (a full-featured programmers editor). Runs fine in 32MB. (java -Xmx32mb -jar jedit.jar). Starts up in 3 seconds. I have just opened up 10 copies. My 512MB laptop does not seem any slower. The GUI on each copy of JEdit seems fine and responsive.
Actually, I have just started up JEdit with only 10MB of memory - still runs fine!
Rather than posting what you think modern Java is like, why don't you try what I have just done and see for yourself? I am using the latest Java 1.5.0 from Sun.
its drawing from a file i can produce easilly by copying to the clipboard from any tool i like and then using something like irfanview to save the wmf on the clipboard to a file
indeed bounds checking and garbage collection eliminate entire classes of problems. if you could do what java does and not make programs that were either slow, bloated (which i define as making the rest of the system feel slower) or both then i'd be happy but they don't seem to have managed it yet.
Sorry, but they have. The garbage collection does not impact performance in recent versions and the bounds checking is mostly optimised out at run time, and involves no extra memory.
1: i don't wan't warmup i wan't apps that start immediately
They do start immediately. It is the optimiser that takes a few seconds to kick in.
2: event the smallest java apps can claim tens of megabytes of memory due to the design of the gc system.
Not true. You can run simple non-GUI apps in just a few megabytes - try it! Most of that is the interpreter/VM.
you don't really wan't to be running more than a few of them at once and you don't wan't to have any of them running whilst running games etc.
Even if they do take a few tens of megabytes, typical machines now have hundreds, so why do you say this?
3: the java gui libraries are pretty horrible making the production of good fast gui apps much harder.
The Swing GUI is now very easy to develop with (see NetBeans 5), and is OpenGL/DirectX accelerated.
in a java app i'd be forced to either resort to a bitmap (much slower to scale especially if the original is high res to avoid visible scaling artifacts), use a third party library (means finding a suitable one and more delployment headaches) or do the drawing from code.
What do you think a Windows metafile is but drawing from code?
i think java and its ilk are becoming the new vb. easy for a relatively poor programmer to handle (unlike C which requires low level knowlage and C++ which is extremely complex and has many features that are widely abused). but doesn't perform as well as traditonal languages especially on the desktop and carries a large deployment overhead (vbs isn't large by modern standards but certainly was when floppies were in more widespread use).
You are wrong. Java is used because it allows developers to get the job done without a lot of the fuss that is required with C++. Large companies use it because it can be high-performance (E-bay use it as the main software for their websites and trading).
when i tried jake on here it was unplayablly slow now i haven't tried the original C version on here but ut which is of similar vintage is fine.
Others have commented that it is fine.
but my experiance is that java stuff is either slow, memory hogging or both.
The same can be said about badly written C or C++ programs. The point is that there is nothing now about the Java language itself, or the most common implementations of it, that means that applications are necessarily large or slow.
I don't know. It is the most popular language for developers on sourceforge, the most in-demand language for IT jobs, the de-facto standard language for mobile devices, the de-facto standard language for commercial server-side development. The most rapidly growing language for embedded and real-time development.
If you require that that the mono library and the.NET library are exactly one-to-one equivilent, then you're right: that will never happen. Of course, that isn't even the case for different C and C++ STL libraries, so I don't think that's a reasonable requirement.
I think it is. If you develop with Java, you are guaranteed that a J2SE 1.4 implementation will provide exactly one-to-one equivalent libraries on all platforms. That is one of the reasons for Java's success.
I realise this is not specific to the C# language, but if C# is to be truly competitive with Java it has to have a full set of libraries cross-platform. Mono is not a complete implementation of the.NET framework, and is never likely to be.
Most people experienced with the languages believe the opposite - it has all the benefits of Java with none of the problems (lack multiple inheritance, effective marshalling, etc).
All the benefits? Like high-performance implementations from multiple vendors? Like quality cross-platform support?
But the language, or more likely the way the language is most commonly used, isn't optimal for some things. Games happen to be one of those things.
You can't generalise. There is no reason why Java can't be used for games, and work well. Garbage collection should not be a problem for well-written applications (indeed, Java can be used for real-time work). There is the Quake clone, Jake, and there are commercial games, and even game platform emulators:
because on a machine that has to run a JVM, memory is tight.
On small machines the JVM is just an interpreter, like any other (but don't let facts stop Slashdot anti-Java bias).
There is an advantage of Java bytecodes is that they tend to be smaller than the equivalent machine code instructions for something like X86. This is one reason why Java is so popular for embedded systems.
Then you aren't in a position to judge the quality of their Java applications....
but I do know that every mobile phone game ever is a piece of crap.
This sounds a pretty broad assessment - every game ever - you must have a lot of time to try them all:)
A lot of commercial websites are pretty poor too, though that's more due to low content and high graphics, and zero thought for accessibility. Whatever the backend runs on makes fuck-all difference to me, obviously.
But if the backend makes no difference, that means you don't know if it is Java (most will be).
Azureus is quite good. But that's basically it from a GUI app perspective.
Azeureus is Java.
Sorry to be persistent, but are you getting my point? You don't loathe all Java applications - you haven't even tried them on many platforms. You have probably (like me) tried out some badly written Swing apps and that has put you off (it put me off years ago). But - things have changed!
The thing is, I remember exactly the same sort of fuss about C++ in the 80s - there was a huge amount of fuss about it being 'slow' simply because it wasn't 'cool assembler'. There were complaints about any GUI being too demanding of hardware and slow, with developers preferring text terminals. Of course, it wasn't slow.
The same thing is happening with Java. No amount of real evidence seems to be able to shift an outdated view that it is slow and bulky. For years Java has benchmarked as fast as C for major applications, and people have been using Java-based GUI applications on many platforms without even noticing. Java has been used in hard real-time high-performance applications, in games (even PC games).
I seriously expect in another ten years or so, Java will be totally accepted, and Slashdotters will be complaining about some new language being slow and how much they 'loathe it':)
That's pretty hard to do since GC isn't deterministic--standard implementations of new/delete aren't deterministic either but C++ allows you to override them and there are deterministic algorithms available.
It it a lot less hard than it used to be, because a lot of work has been put into Java garbage collection to prevent it having an impact on performance. The possibility of using Java for real-time work was realised some time ago. Here is an article from 2001:
I am not an expert in this area, but I have seen demonstrations of how effective this can be. In 2004 Sun even demonstrated real-time device control and non-real time general Java apps running on the same VM.
My personal view is that garbage collection is now finally mainstream, and manual management of memory will be eventually relegated to niche uses.
If you modify that to "I hate Java GUI apps", it's very obvious which are written in Java, and I loathe them all. I assume that's what the grandparent meant, too.
You loathe them all. I assume that means the considerable number of mobile phone games written in Java. It also means very popular open source apps like Azeureus, which - by the way - uses the native GUI of whatever platform you are on (so I assume this means you hate GTK+). It also means the large number of Java apps that run on MacOS/X and use an Apple designed and approved version of Swing.
"If you really hate Java apps, then you will obviously hate the majority of commercial websites."
I rest my case...
So, you dislike the Apple-designed user interfaces, GTK+, virtually all mobile games, and the majority of commercial websites.
C/C++ have been around for many years and show no signs of going away
It is certainly not going away, but it is showing signs of losing its role as the major general-purpose development language.
Whatever you think of them, Java and C# seem to be taking over for everyday business coding, and dynamic languages such as Python and Ruby are now getting much wider use than the 'scripting' role they have been in for years.
A very silly comment, as it is impossible for you to tell if you are using one. If you really hate Java apps, then you will obviously hate the majority of commercial websites. Do you use E-Bay? Do you hate it? It runs on Java.
I'm not familiar with the usage of RTJ, but how does the implementation get around GC in a real-time system? What guarantees are there for adequate heap space given that, in theory, it is possible that GC would not gain enough priority to ever run in the system?
I have no idea.... I expect this is very implementation-specific. However, it certainly does work.
Great, now all we need to do is make them aware of Ruby and have them fund some work on making it RT capable.
That would be a great idea, but is likely to take a lot of work. Getting reasonable performance and real-time capability for Java has taken years. However, there is no reason why this should not be possible for Ruby.
Anything that's written in Java -- that'd fit in with Decaff's usual level (ie. making stuff up and circular definitions).
I am not in the habit of making things up. Unlike many posters here, I deal with reality.
If you want actual evidence, go to any job site, and look for Java, C++, C or.NET. There are plenty of commercial applications NOT written in Java, of course, but Java dominates, with C++ usually a very close second.
If you don't like job sites, check for developer surveys, or IT book sales. They tell the same story.
Oh, and if you want to be taken seriously, don't post such insults anonymously.
So, Boeing want Java, a non-RT language and runtime for their real-time systems?
There is nothing about Java that makes it a non-real-time language. It is being used effectively for this purpose, and staring to take over from C++ and Ada in this area.
Oh dear. Hmm...perhaps they'll use RTJ, despite it being a horrible hack.
No, they are using products that implement JSR-1 which allow standard implementations of Java using the Hotspot optimiser to operate in Real Time.
warm start (after having been run recently) was 5 seconds which is acceptable but not brilliant for a small app.
p t.html
JEdit is not a small app. I have just opened up Kate (an equivalent programmer's editor for KDE). It took 10 seconds (first time of opening), and then 3 seconds after that - equivalent to JEdit. I am working with a KDE desktop, so Kate should have far less to do that JEdit.
It seems to me that people are having different sets of standards for Java applications. Because it is 'Java' then delays that they would not notice or care about in other applications are simply labelled 'unacceptable'. For example, I have just tried to open a Gnome image viewer on the same PC. It took 4 seconds - longer than JEdit.
As far as I can see, the evidence is clear and available to anyone with a PC who is willing to try it - Java applications don't take longer to start than other apps, but there is some perception that they do. How this perception is overcome, I don't know.
this lack of a standard vector graphics format also means that afaict there is no way to copy/paste vector graphics from the system clipboard without using custom native code.
This is a reasonable comment, but nothing to do with the size or speed of Java programs. If you want to use a standard graphics format, there is nothing to stop you from doing so. There are plenty of postscript handling libraries for Java:
http://schmidt.devlib.org/java/libraries-postscri
There are even tools for handling Windows metafiles:
http://piet.jonas.com/
If you want to get this from the clipboard:
Toolkit.getDefaultToolkit().getSystemClipboard()
will provide you will access.
That's probably true. On the other hand, that's mostly a marketing feature rather than a true technical feature.
.NET library and the mono library and say "this is the standard multi-platform library". It's just not particularly in Microsoft's interest to highlight those APIs.
.NET (and C#) don't provide this, no matter what their technical benefits (and in some ways they are superior to Java).
Not really - it is something you can definitely rely on. If something is labelled 'J2SE 1.5' or 'J2EE 1.4' you know exactly what you are going to get. The importance of this can't be overstated.
I mean, one could certainly draw a circle arround the APIs that are shared between the
But this matters - I'm sure someone could do this, but no-one has, and unless Microsoft do this, how can anyone be sure what APIs really are cross-platform (and certified and tested as such), and what will remain so? When you are starting a project that may take years to develop and which you may expect to remain active for a decade or more, having multi-vendor backing for certified APIs can be a real benefit.
starting even the smallest java gui app from cold (no jvm already in cache etc) takes noticable time. starting a similar app written in a traditional language is instant.
No. I have just tried it. A simple non-GUI java app can start up in a few hundred milliseconds.
As for 'traditional language is instant' - how long does it take Emacs to start?
iirc java now works by allocating up to a limit set at vm start time and doesn't start collecting garbage until that limit it reached. so unless you use special settings on the vm command line java apps will end up using a lot of memory.
No. You can set the memory to whatever you like. You don't have to use lots of memory.
because if you are using say 5 small java apps at once thats probablly half your memory gone already not counting any other stuff that needs memory.
Let's do some math. Say you allocate 32MB for even a moderate java program. 5 x 32 = 160MB. Typically PCs ship with 512MB. Doesn't look like half the memory to me!
Lets actually a program. I open up Jedit (a full-featured programmers editor). Runs fine in 32MB. (java -Xmx32mb -jar jedit.jar). Starts up in 3 seconds. I have just opened up 10 copies. My 512MB laptop does not seem any slower. The GUI on each copy of JEdit seems fine and responsive.
Actually, I have just started up JEdit with only 10MB of memory - still runs fine!
Rather than posting what you think modern Java is like, why don't you try what I have just done and see for yourself? I am using the latest Java 1.5.0 from Sun.
its drawing from a file i can produce easilly by copying to the clipboard from any tool i like and then using something like irfanview to save the wmf on the clipboard to a file
So what? It is still code.
indeed bounds checking and garbage collection eliminate entire classes of problems. if you could do what java does and not make programs that were either slow, bloated (which i define as making the rest of the system feel slower) or both then i'd be happy but they don't seem to have managed it yet.
Sorry, but they have. The garbage collection does not impact performance in recent versions and the bounds checking is mostly optimised out at run time, and involves no extra memory.
1: i don't wan't warmup i wan't apps that start immediately
They do start immediately. It is the optimiser that takes a few seconds to kick in.
2: event the smallest java apps can claim tens of megabytes of memory due to the design of the gc system.
Not true. You can run simple non-GUI apps in just a few megabytes - try it! Most of that is the interpreter/VM.
you don't really wan't to be running more than a few of them at once and you don't wan't to have any of them running whilst running games etc.
Even if they do take a few tens of megabytes, typical machines now have hundreds, so why do you say this?
3: the java gui libraries are pretty horrible making the production of good fast gui apps much harder.
The Swing GUI is now very easy to develop with (see NetBeans 5), and is OpenGL/DirectX accelerated.
in a java app i'd be forced to either resort to a bitmap (much slower to scale especially if the original is high res to avoid visible scaling artifacts), use a third party library (means finding a suitable one and more delployment headaches) or do the drawing from code.
What do you think a Windows metafile is but drawing from code?
i think java and its ilk are becoming the new vb. easy for a relatively poor programmer to handle (unlike C which requires low level knowlage and C++ which is extremely complex and has many features that are widely abused). but doesn't perform as well as traditonal languages especially on the desktop and carries a large deployment overhead (vbs isn't large by modern standards but certainly was when floppies were in more widespread use).
You are wrong. Java is used because it allows developers to get the job done without a lot of the fuss that is required with C++. Large companies use it because it can be high-performance (E-bay use it as the main software for their websites and trading).
when i tried jake on here it was unplayablly slow now i haven't tried the original C version on here but ut which is of similar vintage is fine.
Others have commented that it is fine.
but my experiance is that java stuff is either slow, memory hogging or both.
The same can be said about badly written C or C++ programs. The point is that there is nothing now about the Java language itself, or the most common implementations of it, that means that applications are necessarily large or slow.
Is Java successful?
I don't know. It is the most popular language for developers on sourceforge, the most in-demand language for IT jobs, the de-facto standard language for mobile devices, the de-facto standard language for commercial server-side development. The most rapidly growing language for embedded and real-time development.
I guess it is.
If you require that that the mono library and the .NET library are exactly one-to-one equivilent, then you're right: that will never happen. Of course, that isn't even the case for different C and C++ STL libraries, so I don't think that's a reasonable requirement.
I think it is. If you develop with Java, you are guaranteed that a J2SE 1.4 implementation will provide exactly one-to-one equivalent libraries on all platforms. That is one of the reasons for Java's success.
C# is licensed by by Borland also.
Interesting, but until they produce a C# for Linux, I'm not that interested.
And of course there's mono, too.
.NET framework, and is never likely to be.
I realise this is not specific to the C# language, but if C# is to be truly competitive with Java it has to have a full set of libraries cross-platform. Mono is not a complete implementation of the
Most people experienced with the languages believe the opposite - it has all the benefits of Java with none of the problems (lack multiple inheritance, effective marshalling, etc).
All the benefits? Like high-performance implementations from multiple vendors? Like quality cross-platform support?
But the language, or more likely the way the language is most commonly used, isn't optimal for some things. Games happen to be one of those things.
/
You can't generalise. There is no reason why Java can't be used for games, and work well. Garbage collection should not be a problem for well-written applications (indeed, Java can be used for real-time work). There is the Quake clone, Jake, and there are commercial games, and even game platform emulators:
http://www.millstone.demon.co.uk/download/javaboy
because on a machine that has to run a JVM, memory is tight.
On small machines the JVM is just an interpreter, like any other (but don't let facts stop Slashdot anti-Java bias).
There is an advantage of Java bytecodes is that they tend to be smaller than the equivalent machine code instructions for something like X86. This is one reason why Java is so popular for embedded systems.
Well, I don't know anything about Apple
:)
:)
Then you aren't in a position to judge the quality of their Java applications....
but I do know that every mobile phone game ever is a piece of crap.
This sounds a pretty broad assessment - every game ever - you must have a lot of time to try them all
A lot of commercial websites are pretty poor too, though that's more due to low content and high graphics, and zero thought for accessibility. Whatever the backend runs on makes fuck-all difference to me, obviously.
But if the backend makes no difference, that means you don't know if it is Java (most will be).
Azureus is quite good. But that's basically it from a GUI app perspective.
Azeureus is Java.
Sorry to be persistent, but are you getting my point? You don't loathe all Java applications - you haven't even tried them on many platforms. You have probably (like me) tried out some badly written Swing apps and that has put you off (it put me off years ago). But - things have changed!
The thing is, I remember exactly the same sort of fuss about C++ in the 80s - there was a huge amount of fuss about it being 'slow' simply because it wasn't 'cool assembler'. There were complaints about any GUI being too demanding of hardware and slow, with developers preferring text terminals. Of course, it wasn't slow.
The same thing is happening with Java. No amount of real evidence seems to be able to shift an outdated view that it is slow and bulky. For years Java has benchmarked as fast as C for major applications, and people have been using Java-based GUI applications on many platforms without even noticing. Java has been used in hard real-time high-performance applications, in games (even PC games).
I seriously expect in another ten years or so, Java will be totally accepted, and Slashdotters will be complaining about some new language being slow and how much they 'loathe it'
That's pretty hard to do since GC isn't deterministic--standard implementations of new/delete aren't deterministic either but C++ allows you to override them and there are deterministic algorithms available.
c le.jhtml?articleID=16503463
It it a lot less hard than it used to be, because a lot of work has been put into Java garbage collection to prevent it having an impact on performance. The possibility of using Java for real-time work was realised some time ago. Here is an article from 2001:
http://www.commsdesign.com/design_corner/showArti
I am not an expert in this area, but I have seen demonstrations of how effective this can be. In 2004 Sun even demonstrated real-time device control and non-real time general Java apps running on the same VM.
My personal view is that garbage collection is now finally mainstream, and manual management of memory will be eventually relegated to niche uses.
If you modify that to "I hate Java GUI apps", it's very obvious which are written in Java, and I loathe them all. I assume that's what the grandparent meant, too.
...
:)
You loathe them all. I assume that means the considerable number of mobile phone games written in Java. It also means very popular open source apps like Azeureus, which - by the way - uses the native GUI of whatever platform you are on (so I assume this means you hate GTK+). It also means the large number of Java apps that run on MacOS/X and use an Apple designed and approved version of Swing.
"If you really hate Java apps, then you will obviously hate the majority of commercial websites."
I rest my case
So, you dislike the Apple-designed user interfaces, GTK+, virtually all mobile games, and the majority of commercial websites.
Interesting
C/C++ have been around for many years and show no signs of going away
It is certainly not going away, but it is showing signs of losing its role as the major general-purpose development language.
Whatever you think of them, Java and C# seem to be taking over for everyday business coding, and dynamic languages such as Python and Ruby are now getting much wider use than the 'scripting' role they have been in for years.
I hate Java apps.
A very silly comment, as it is impossible for you to tell if you are using one. If you really hate Java apps, then you will obviously hate the majority of commercial websites. Do you use E-Bay? Do you hate it? It runs on Java.
I'm not familiar with the usage of RTJ, but how does the implementation get around GC in a real-time system? What guarantees are there for adequate heap space given that, in theory, it is possible that GC would not gain enough priority to ever run in the system?
I have no idea.... I expect this is very implementation-specific. However, it certainly does work.
Great, now all we need to do is make them aware of Ruby and have them fund some work on making it RT capable.
That would be a great idea, but is likely to take a lot of work. Getting reasonable performance and real-time capability for Java has taken years. However, there is no reason why this should not be possible for Ruby.
Anything that's written in Java -- that'd fit in with Decaff's usual level (ie. making stuff up and circular definitions).
.NET. There are plenty of commercial applications NOT written in Java, of course, but Java dominates, with C++ usually a very close second.
I am not in the habit of making things up. Unlike many posters here, I deal with reality.
If you want actual evidence, go to any job site, and look for Java, C++, C or
If you don't like job sites, check for developer surveys, or IT book sales. They tell the same story.
Oh, and if you want to be taken seriously, don't post such insults anonymously.
he meant in terms of world wide USEAGE. When you "corrected" them, you said...
Then claimed he was wrong. That's not very fair, is it?
He didn't say anything about usage. He said 'most commercial applications' - an unqualified phrase.
If you want to consider usage, then Java (being the de-facto language mobile phone games) is overwhelmingly popular.
I would like to add that the very users who have to use the Java apps are the ones who hate Java.
Yes, I am sure that businesses and corporations are moving to Java because their users hate it.
I don't know about that, depends on how you classify "commercial applications right now"
Number of applications that developers are paid to develop.
So, Boeing want Java, a non-RT language and runtime for their real-time systems?
There is nothing about Java that makes it a non-real-time language. It is being used effectively for this purpose, and staring to take over from C++ and Ada in this area.
Oh dear. Hmm...perhaps they'll use RTJ, despite it being a horrible hack.
No, they are using products that implement JSR-1 which allow standard implementations of Java using the Hotspot optimiser to operate in Real Time.