* Re: [OT] Threads, inelegance, and Java
@ 2001-06-21 4:10 Dan Kegel
0 siblings, 0 replies; 36+ messages in thread
From: Dan Kegel @ 2001-06-21 4:10 UTC (permalink / raw)
To: linux-kernel@vger.kernel.org
Russell Leighton wrote:
> The lack of a good operating system _dependent_ interface
> makes running fast hard in Java when you need to do IO...
> yes, there is always JNI so you can add a little C to mmap a file or whatever,
JDK 1.4 beta comes with a way to memory-map files, and various
other I/O improvements (like poll(); see http://www.jcp.org/jsr/detail/51.jsp).
Chris Smith will have some nio benchmarks up on http://www.jlinux.org/
next week or so showing how well their nonblocking network I/O performs.
Sun is slowly getting their act together on the I/O front with java.
Still, the competition from C# and for that matter gcj will probably be
a good thing, keep 'em on their toes.
(Disclaimer: I served on the JSR-51 expert group, representing the linux
point of view, kinda.)
- Dan
^ permalink raw reply [flat|nested] 36+ messages in thread* RE: [OT] Threads, inelegance, and Java
@ 2001-06-20 21:13 Holzrichter, Bruce
2001-06-20 21:17 ` Richard B. Johnson
0 siblings, 1 reply; 36+ messages in thread
From: Holzrichter, Bruce @ 2001-06-20 21:13 UTC (permalink / raw)
To: 'root@chaos.analogic.com', Daniel Phillips
Cc: Rob Landley, Tony Hoyle, Davide Libenzi, Russell Leighton,
linux-kernel, Ben Greear
>The GUI using Turbo Pascal required a lot of RAM.
:o) Now adays that sounds kind of funny...
Did you have anything to do with the c-64 version as well. Now that brings
back memories........
^ permalink raw reply [flat|nested] 36+ messages in thread* RE: [OT] Threads, inelegance, and Java 2001-06-20 21:13 Holzrichter, Bruce @ 2001-06-20 21:17 ` Richard B. Johnson 0 siblings, 0 replies; 36+ messages in thread From: Richard B. Johnson @ 2001-06-20 21:17 UTC (permalink / raw) To: Holzrichter, Bruce Cc: Daniel Phillips, Rob Landley, Tony Hoyle, Davide Libenzi, Russell Leighton, linux-kernel, Ben Greear On Wed, 20 Jun 2001, Holzrichter, Bruce wrote: > > > >The GUI using Turbo Pascal required a lot of RAM. > > :o) Now adays that sounds kind of funny... > > Did you have anything to do with the c-64 version as well. Now that brings > back memories........ > No. I never even had one. Cheers, Dick Johnson Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips). "Memory is like gasoline. You use it up when you are running. Of course you get it all back when you reboot..."; Actual explanation obtained from the Micro$oft help desk. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: Alan Cox quote? (was: Re: accounting for threads)
@ 2001-06-20 9:00 Henning P. Schmiedehausen
2001-06-20 11:25 ` [OT] Threads, inelegance, and Java Aaron Lehmann
0 siblings, 1 reply; 36+ messages in thread
From: Henning P. Schmiedehausen @ 2001-06-20 9:00 UTC (permalink / raw)
To: linux-kernel
Larry McVoy <lm@bitmover.com> writes:
> [...] died-in-the-wool Java programmer and could care less about
> performance, system design, or any elegance whatsoever.
Larry, please.
SunOS _is_ dead [1]. Ever since they switched to Solaris, you seem to
be sore about Si^hun and everything that comes out of them [3] :-)
If it wasn't for Java, 99% of the commercial world today would be
Visual Basic. So, please, stop bashing on it just because you're not
using it.
All operating systems suck. All languages suck. Everyone can write bad
code in every language. It's neither a question of a language or OS
but of developer skill and experience.
Just the fact that some people use Java (or any other language) does
not mean, that they don't care about "performance, system-design or
any elegance whatsoever" [2].
Regards
Henning
[1] I still have a SunOS 4.1.4_patched_to_the_hell_and_back box at a
customer site and this single box gives us more headaches performance-
, stability and security wise than any of the 10+ Solaris 2.7 or 25+
Linux boxes. It's a sucker to keep the newbie admins awake, that there
were things before bash, linuxconf and /sbin/chkconfig. Compiling an
OpenSSH on this box made at least one of the newbies quit. =;-)
[2] I was raised on SunOS 4.0.3 and I'm glad to have Solaris+Linux. I
did an OS innards course at the university around 1991/1992 and they
had a license to give the students a look into the source code of
SunOS at this time. I had nightmares for weeks after. Horrors after
horrors to sacrifice "system-design and elegance" for "performance".
[3] Please. It starts sounding like the nostalgia some east germans
develop to get their totalitarian regime back, because "everything was
better then".
--
Dipl.-Inf. (Univ.) Henning P. Schmiedehausen -- Geschaeftsfuehrer
INTERMETA - Gesellschaft fuer Mehrwertdienste mbH hps@intermeta.de
Am Schwabachgrund 22 Fon.: 09131 / 50654-0 info@intermeta.de
D-91054 Buckenhof Fax.: 09131 / 50654-20
^ permalink raw reply [flat|nested] 36+ messages in thread* [OT] Threads, inelegance, and Java 2001-06-20 9:00 Alan Cox quote? (was: Re: accounting for threads) Henning P. Schmiedehausen @ 2001-06-20 11:25 ` Aaron Lehmann 2001-06-20 11:25 ` Rob Landley ` (3 more replies) 0 siblings, 4 replies; 36+ messages in thread From: Aaron Lehmann @ 2001-06-20 11:25 UTC (permalink / raw) To: hps; +Cc: linux-kernel On Wed, Jun 20, 2001 at 09:00:47AM +0000, Henning P. Schmiedehausen wrote: > Just the fact that some people use Java (or any other language) does > not mean, that they don't care about "performance, system-design or > any elegance whatsoever" [2]. However, the very concept of Java encourages not caring about "performance, system-design or any elegance whatsoever". If you cared about any of those things you would compile to native code (it exists for a reason). Need run-anywhere support? Distribute sources instead. Once they are compiled they won't need to be reinterpreted on every run. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 11:25 ` [OT] Threads, inelegance, and Java Aaron Lehmann @ 2001-06-20 11:25 ` Rob Landley 2001-06-20 17:36 ` Martin Dalecki ` (2 more replies) 2001-06-20 15:12 ` Ben Greear ` (2 subsequent siblings) 3 siblings, 3 replies; 36+ messages in thread From: Rob Landley @ 2001-06-20 11:25 UTC (permalink / raw) To: Aaron Lehmann, hps; +Cc: linux-kernel On Wednesday 20 June 2001 07:25, Aaron Lehmann wrote: > On Wed, Jun 20, 2001 at 09:00:47AM +0000, Henning P. Schmiedehausen wrote: > > Just the fact that some people use Java (or any other language) does > > not mean, that they don't care about "performance, system-design or > > any elegance whatsoever" [2]. > > However, the very concept of Java encourages not caring about > "performance, system-design or any elegance whatsoever". The same arguments were made 30 years ago about writing the OS in a high level language like C rather than in raw assembly. And back in the days of the sub-1-mhz CPU, that really meant something. > If you cared > about any of those things you would compile to native code (it exists > for a reason). Need run-anywhere support? Distribute sources instead. > Once they are compiled they won't need to be reinterpreted on every > run. I don't know about that. The 8 bit nature of java bytecode means you can suck WAY more instructions in across the memory bus in a given clock cycle, and you can also hold an insane amount of them in cache. These are the real performance limiting factors, since the inside of your processor is clock multiplied into double digits nowdays, and that'll only increase as die sizes shrink, transistor budgets grow, and cache sizes get bigger. In theory, a 2-core RISC or 3-core VLIW processor can execute an interpretive JVM pretty darn fast. Think a jump-table based version (not quite an array of function pointers dereferenced by the bytecode, instead something that doesn't push anything on the stack since you know where they all return to). The lookup is seperate enough that it can be done by another (otherwise idle) processor core. Dunno how that would affect speculative execution. But the REAL advantage of this is, you run straight 8 bit java code that you can fit GOBS of in the L1 and L2 caches. Or if you like the idea of a JIT, think about transmeta writing a code morphing layer that takes java bytecodes. Ditch the VM and have the processor do it in-cache. This doesn't mean java is really likely to outperform native code. But it does mean that the theoretical performance problems aren't really that bad. Most java programs I've seen were written by rabid monkeys, but that's not the fault of the language. [1]. I've done java on a 486dx75 with 24 megabytes of ram (my old butterfly keyboard thinkpad laptop), and I got decent performance out of it. You don't make a lot of objects, you make one object with a lot of variables and methods in it. You don't unnecessarily allocate and discard objects (including strings, the stupid implementation of string+string+string is evil,) to bulk up the garbage collector and fragment your memory. The garbage collector does NOT shrink the heap allocated from the OS, the best you can hope for is that some of it'll be swapped out, which is evil, but an implementation problem rather than a language design problem.) For a while I was thinking of fixing java's memory problems by implementing a bytecode interpreter based on an object table. (Yeah, one more layer of indirection, but it allowed a 64 bit address space, truly asynchronous garbage collection, and packing the heap asynchronously as well. I was actually trying to get it all to work within hard realtime constraints for a while. (No, you can't allocate a new object within hard realtime. But you could do just about everything else.) But Sun owns java and I didn't feel like boxing myself in with one of thier oddball licenses. Maybe I'll look at python's bytecode stuff someday and see if any of the ideas transfer over...) How many instructions does your average processor really NEED? MIT's first computer had 4 instructions: load, save, add, and test/jump. We only need 32 or 64 bits for the data we're manipulating. 8 bit code is a large part of what allowed people to write early video games in 8k of ram. By the way: Python's approach to memory management is to completely ignore it. Have you seen the way it deals with loops? (Hint: allocate an object for each iteration through the loop, and usually this is done up front creating a big array of them that is then iterated through.) And this turns out to be a usable enough approach that people are writing action games in python via SDL bindings. The largest contributing factor to Java's reputation for bad performance is that most java programmers really really suck. (Considering that most of them were brand new to the language in 1998 and even veterans like me only learned it in 1995, it's not entirely suprising. And that for many of them, it's their first language period...) So if it's possible to write efficient code in python, it's GOT to be possible to write efficient code in Java, which can at least loop without allocating objects in the process. (Yeah, I know about map, I'm trying to make a point here. :) Rob [1] Java 1.1 anyway. 1.0 hadn't seen the light of day in real usage yet, and as such doesn't actually work very well. 1.1 was revised based on the complaints from the field, and is in my opinion where the language peaked. (And that's still what I teach to students whenever I do an intro to Java course at the local community college.) Java 1.2 is bloated, and Swing is just evil. I haven't even looked at 3. Sun has the same case of featuritis that infests netscape navigator, microsoft word, and every other piece of proprietary software that's already sold a bunch of copies to users and now has to figure out how to get MORE money out of them. Where "one more feature" may cause yet another customer to buy it, and is therefore worth money. Open Source doesn't have that problem because we have to maintain this gorp ourselves, and we're far too lazy to include anything in there unless there would be serious and widespread complaints if it were removed. About the only proprietary software that DOESN'T have this problem is games, because people solve old games and put them aside, so you can always write another game and sell it to the same people. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 11:25 ` Rob Landley @ 2001-06-20 17:36 ` Martin Dalecki 2001-06-20 19:27 ` Mike Harrold [not found] ` <20010621000725.A24672@werewolf.able.es> 2001-06-21 16:48 ` Adam Sampson 2 siblings, 1 reply; 36+ messages in thread From: Martin Dalecki @ 2001-06-20 17:36 UTC (permalink / raw) To: landley, linux-kernel Rob Landley wrote: > The same arguments were made 30 years ago about writing the OS in a high > level language like C rather than in raw assembly. And back in the days of > the sub-1-mhz CPU, that really meant something. And then those days we are still writing lot's of ASM in kernels... > I don't know about that. The 8 bit nature of java bytecode means you can > suck WAY more instructions in across the memory bus in a given clock cycle, > and you can also hold an insane amount of them in cache. These are the real What about the constant part of instructions? What about the alignment characteristics of current CPU busses? > performance limiting factors, since the inside of your processor is clock > multiplied into double digits nowdays, and that'll only increase as die sizes > shrink, transistor budgets grow, and cache sizes get bigger. > > In theory, a 2-core RISC or 3-core VLIW processor can execute an interpretive > JVM pretty darn fast. Think a jump-table based version (not quite an array Bullshit! In theory the JVM resembles some very very old instruction set well suited for a CISC CPU. In esp. the leak of registers is even bigger then on i386 arch. And bloody no compiler will be able to optimize this sanely... And then there arises the problem of local variable management and so on. There where attempts already made to design a CPU according to this specs. As far as one can see they have all failed. Even Sun himself gave up his design. The compact instruction set is due to Javas inheritance from the embedded world - nothing else. Too compact instruction set designs make for very nasty instruction decoders and therfore slow CPUs. This complexity can be better overcome by the IBM memmory compressor chip then in the instruction set itself. > Or if you like the idea of a JIT, think about transmeta writing a code > morphing layer that takes java bytecodes. Ditch the VM and have the > processor do it in-cache. Blah blah blah. The performance of the Transmeta CPU SUCKS ROCKS. No matter what they try to make you beleve. A venerable classical desing like the Geode outperforms them in any terms. There is simple significant information lost between compiled code and source code. Therefore no JIT compiler in this world will ever match the optimization opportunities of a classic C compiler! IBM researched opportunities for code morphing long ago before Transmeta come to live - they ditched it for good reasons. Well the actual paper states that the theorethical performance was "just" 20% worser then a comparable normal design. Well "just 20%" is a half universe diameter for CPU designers. > This doesn't mean java is really likely to outperform native code. But it > does mean that the theoretical performance problems aren't really that bad. > Most java programs I've seen were written by rabid monkeys, but that's not > the fault of the language. [1]. Think garbage collector - this explains nearly 90% of the performance problems Java code has. The remaining 10% are still by a factor of 10 bad in comparision to classical code. Think zero copy on write - most Java code induces insane amounts of copyiing data around for no good reaons (Sring class and friends for example). Java code will never ever perform well. > How many instructions does your average processor really NEED? MIT's first > computer had 4 instructions: load, save, add, and test/jump. We only need 32 > or 64 bits for the data we're manipulating. 8 bit code is a large part of > what allowed people to write early video games in 8k of ram. Ton's of them. Please just remember how the RISC instruction set designs evolved over time. It was no accident! -- - phone: +49 214 8656 283 - job: eVision-Ventures AG, LEV .de (MY OPINIONS ARE MY OWN!) - langs: de_DE.ISO8859-1, en_US, pl_PL.ISO8859-2, last ressort: ru_RU.KOI8-R ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 17:36 ` Martin Dalecki @ 2001-06-20 19:27 ` Mike Harrold 2001-06-20 17:46 ` Rob Landley ` (2 more replies) 0 siblings, 3 replies; 36+ messages in thread From: Mike Harrold @ 2001-06-20 19:27 UTC (permalink / raw) To: Martin Dalecki; +Cc: landley, linux-kernel Martin Dalecki wrote:> > Rob Landley wrote: > > > Or if you like the idea of a JIT, think about transmeta writing a code > > morphing layer that takes java bytecodes. Ditch the VM and have the > > processor do it in-cache. > > Blah blah blah. The performance of the Transmeta CPU SUCKS ROCKS. No > matter > what they try to make you beleve. A venerable classical desing like > the Geode outperforms them in any terms. There is simple significant > information > lost between compiled code and source code. Therefore no JIT compiler > in this world will ever match the optimization opportunities of a > classic > C compiler! IBM researched opportunities for code morphing long ago > before > Transmeta come to live - they ditched it for good reasons. Well the > actual > paper states that the theorethical performance was "just" 20% worser > then > a comparable normal design. Well "just 20%" is a half universe diameter > for > CPU designers. So what? Crusoe isn't designed for use in supercomputers. It's designed for use in laptops where the user is running an email reader, a web browser, a word processor, and where the user couldn't give a cr*p about performance as long as it isn't noticeable (20% *isn't* for those types of apps), but where the user does give a cr*p about how long his or her battery lasts (ie, the entire business day, and not running out of power at lunch time). Yes, it *can* be used in a supercomputer (or more preferably, a cluster of Linux machines), or even as a server where performance isn't the number one concern and things like power usage (read: anywhere in California right now ;-) ), and rack size are important. You can always get faster, more efficient hardware, but you'll pay for it. Remember, the whole concept of code-morphing is that the majority of apps that people run repeat the same slice of code over and over (eg, a word processor). Once crusoe has translated it once, it doesn't need to do it again. It's the same concept as a JIT java compiler. /Mike - who doesn't work for Transmeta, in case anyone was wondering... :-) ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 19:27 ` Mike Harrold @ 2001-06-20 17:46 ` Rob Landley 2001-06-20 19:53 ` Martin Dalecki [not found] ` <mailman.993067219.29993.linux-kernel2news@redhat.com> 2 siblings, 0 replies; 36+ messages in thread From: Rob Landley @ 2001-06-20 17:46 UTC (permalink / raw) To: Mike Harrold, Martin Dalecki; +Cc: landley, linux-kernel On Wednesday 20 June 2001 15:27, Mike Harrold wrote: > Martin Dalecki wrote:> > > > Blah blah blah. The performance of the Transmeta CPU SUCKS ROCKS. No > > matter > > what they try to make you beleve. A venerable classical desing like > > the Geode outperforms them in any terms. There is simple significant >[root@mobile1 /root]# cat /proc/cpuinfo >processor : 0 >vendor_id : CyrixInstead >cpu family : 5 >model : 7 >model name : Cyrix MediaGXtm MMXtm Enhanced >stepping : 4 >fdiv_bug : no >hlt_bug : no >sep_bug : no >f00f_bug : no >coma_bug : no >fpu : yes >fpu_exception : yes >cpuid level : 2 >wp : yes >flags : fpu msr cx8 cmov 16 mmx cxmmx >bogomips : 46.89 Let's just say I haven't exactly been thrilled with the performance of the geode samples we've been using at work. I have a 486 at home that outperforms this sucker. Maybe it's clocking itself down for heat reasons, but it really, really sucks. (Especially since I'm trying to get it to do ssl.) And yes, we're thinking about transmeta as a potential replacement for the next generation hardware. We're also looking around for other (x86 compatable) alternatives... > > Well the actual paper states that the theorethical performance was "just" > > 20% worser then a comparable normal design. Well "just 20%" is a half > > universe diameter for CPU designers. In the case of transmeta, that's in exchange for a third processor core, which is probably worth something. 20% is only about 3 months of moore's law. 90% of processor speed improvements over the past few years have been die size shrinks. You could clock a 486 at several hundred mhz with current manufacturing techniques, and get better performance out of it than low end pentiums. (Somebody did it with a bottle of frozen alcohol and got themselves injured, but was managing a quite nice quake frame rate before the bottle exploded.) And that's not counting the fact a pentium has twice as many pins to suck data through... And I repeat, if you're clocking the processor over 10x the memory bus rate, your cache size and your memory bus become fairly important limiting factors. (Modern processors are much more efficient about using the memory bus, doing bursts and predictive prefetches and all. But that's a seperate issue.) Look at pentium 4. Almost all the work done there was simply so they could clock the sucker higher, because Intel uses racy logic in their designs and had to break everything down into really small pipeline stages to get the timing tolerances into something they could manufacture above 1 ghz. It's AT LEAST 20% slower per clock than a PIII or Athlon. It's all noise compared to manufacturing advances shrinking die sizes and reducing trace lengths and capacitance and all that fun stuff... > So what? Crusoe isn't designed for use in supercomputers. It's designed > for use in laptops where the user is running an email reader, a web Not just that, think "cluster density". 142 processors per 1U, air cooled, running around 600 mhz each. The winner hands down in mips per square foot. (Well, I suppose you could do the same thing with arm, but I haven't seen it on the market yet. I may not have been paying attention...) > browser, a word processor, and where the user couldn't give a cr*p about > performance as long as it isn't noticeable (20% *isn't* for those types > of apps), but where the user does give a cr*p about how long his or her > battery lasts (ie, the entire business day, and not running out of power > at lunch time). Our mobiles aren't (currently) battery powered, but a processor that doesn't clock itself down to 46 bogomips when it's running without a fan is a GOOD thing if you're trying to pump encrypted bandwidth through it at faster than 350 kilobytes per second. (The desktop units are getting 3.5 megs/second running the same code...) > Yes, it *can* be used in a supercomputer (or more preferably, a cluster > of Linux machines), or even as a server where performance isn't the > number one concern and things like power usage (read: anywhere in > California right now ;-) ), and rack size are important. You can always > get faster, more efficient hardware, but you'll pay for it. It's still not power, it''s heat. You can run some serious voltage into a rack pretty easily, but it'll melt unless you bury the thing in fluorinert, which is expensive. (Water cooling of an electrical applicance is NOT something you want to be anywhere near when anything goes wrong.) Processors in a 1U are tied together by a PCI bus or some such. The latency going from one to another is very low. Processors in different racks are tied together by cat 5 or myrinet or some such, and have a much higher latency due to speed of light concerns. A tightly enough coupled cluster can act like NUMA, which can deal with a lot more applications than high-latency clustering can. (There hasn't been as much push for research here because it's been too expensive for your average grad student to play with, but now that the price is coming down...) > Remember, the whole concept of code-morphing is that the majority of > apps that people run repeat the same slice of code over and over (eg, > a word processor). Once crusoe has translated it once, it doesn't need > to do it again. It's the same concept as a JIT java compiler. Except code morphing's translation happens about when you suck stuff in from main memory into the L1 or L2 cache, which is happening WAY slower than the inside of the processor is dealing with anyway, so basically it gives the processor extra work to do exactly when it's likely to be spending time on wait states... > /Mike - who doesn't work for Transmeta, in case anyone was wondering... :-) Neither does Rob. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 19:27 ` Mike Harrold 2001-06-20 17:46 ` Rob Landley @ 2001-06-20 19:53 ` Martin Dalecki 2001-06-20 17:53 ` Rob Landley [not found] ` <mailman.993067219.29993.linux-kernel2news@redhat.com> 2 siblings, 1 reply; 36+ messages in thread From: Martin Dalecki @ 2001-06-20 19:53 UTC (permalink / raw) To: Mike Harrold; +Cc: landley, linux-kernel Mike Harrold wrote: > So what? Crusoe isn't designed for use in supercomputers. It's designed > for use in laptops where the user is running an email reader, a web > browser, a word processor, and where the user couldn't give a cr*p about > performance as long as it isn't noticeable (20% *isn't* for those types > of apps), but where the user does give a cr*p about how long his or her > battery lasts (ie, the entire business day, and not running out of power > at lunch time). I'm just to good in remembering the academing discussion about code morphing beeing a way to get more performance out of a chip design. They where claiming, that due to the fact they could make the underlying chip design much simpler and VLIW, the performance offset by the emulation wouldn't be smaller than the performance win in therms of a suprerior underlying chip architecture. This was set off to provide compensation for the biggest hurdle of VLIW design - insane code size and partially huge memmory bus bandwidth designs due to this. (Why do you think the itanim sucks on integer performance?) After this turned out the be the fact in reality - IBM dropped the developement of code morphing chips. Well transmeta turned to claims that the main advantage of it's design is much smaller power consumption. Well but in relity underclocked modern design optimized for power consumtions beat the transmeta chip easly: Geode, and the recently announced VIA chip to name a few. In comparision to chip design esp. targetted at low power consumtion the transmeta chip is laughable: this ARM please! My psion beats *ANY* chip from them by huge magnitude. > Yes, it *can* be used in a supercomputer (or more preferably, a cluster > of Linux machines), or even as a server where performance isn't the > number one concern and things like power usage (read: anywhere in > California right now ;-) ), and rack size are important. You can always > get faster, more efficient hardware, but you'll pay for it. Well the transmeta cpu isn't cheap actually. And if you talk about super computing, hmm what about some PowerPC CPU variant - they very compettetiv in terms of cost and FPU performance! Transmeta isn't the adequate choice here. > Remember, the whole concept of code-morphing is that the majority of > apps that people run repeat the same slice of code over and over (eg, > a word processor). Once crusoe has translated it once, it doesn't need > to do it again. It's the same concept as a JIT java compiler. Well both of those concepts fail in terms of optimization due to the same reason: much less information is present about the structure of the code then during source code compilation. And therefore usually the performance of any kind of JIT compiler *sucks* in comparision to classical sophisticated compilers. Additionaly there may be some performance wins due to the ability of runtime profiling (anykind thereof), however it still remains to be shown that this performs better then statically analyzed code. > /Mike - who doesn't work for Transmeta, in case anyone was wondering... :-) /Marcin - who doesn't bet a penny on Transmeta ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 19:53 ` Martin Dalecki @ 2001-06-20 17:53 ` Rob Landley 2001-06-21 7:45 ` Albert D. Cahalan 0 siblings, 1 reply; 36+ messages in thread From: Rob Landley @ 2001-06-20 17:53 UTC (permalink / raw) To: Martin Dalecki, Mike Harrold; +Cc: landley, linux-kernel On Wednesday 20 June 2001 15:53, Martin Dalecki wrote: > Mike Harrold wrote: > > Well the transmeta cpu isn't cheap actually. Any processor's cheap once it's got enough volume. That's an effect not a cause. > And if you talk about > super computing, hmm what about some PowerPC CPU variant - they very > compettetiv in terms of cost and FPU performance! Transmeta isn't the > adequate choice here. You honestly think you can fit 142 PowerPC processors in a single 1U, air cooled? Liquid air cooled, maybe... > Well both of those concepts fail in terms of optimization due > to the same reason: much less information is present about > the structure of the code then during source code compilation. LESS info? Anybody wanna explain to me how it's possible to do branch prediction and speculative execution at compile time? (Ala iTanium?) I've heard a few attempts at an explanation, but nothing by anybody who was sober at the time... You have less time to work, but you actually have MORE info about how it's actually running... > Additionaly there may be some performance wins due to the > ability of runtime profiling (anykind thereof), however it still remains > to be shown that this performs better then statically analyzed code. Okay, I'll bite. Why couldn't a recompiler (like MetroWerks stuff) do the same static analysis on large code runs that GCC or some such could do if you give it -Oinsane and let it think for five minutes about each file? Obviously the run-time version isn't going to spend the TIME to do that. But claiming the information to perform these actions isn't available just because your variables no longer have english names... > > /Mike - who doesn't work for Transmeta, in case anyone was wondering... > > :-) > > /Marcin - who doesn't bet a penny on Transmeta /Rob, who still owns stock in Intel of all things. Rob ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 17:53 ` Rob Landley @ 2001-06-21 7:45 ` Albert D. Cahalan 0 siblings, 0 replies; 36+ messages in thread From: Albert D. Cahalan @ 2001-06-21 7:45 UTC (permalink / raw) To: landley; +Cc: Martin Dalecki, Mike Harrold, linux-kernel Rob Landley writes: > On Wednesday 20 June 2001 15:53, Martin Dalecki wrote: >> Mike Harrold wrote: >> super computing, hmm what about some PowerPC CPU variant - they very >> compettetiv in terms of cost and FPU performance! Transmeta isn't the >> adequate choice here. > > You honestly think you can fit 142 PowerPC processors in a single 1U, > air cooled? That 142 would be what, a SHARC DSP system? It sure doesn't look like Transmeta's Crueso. The best I found was 6 and 8 per 1U: "RLX has managed to tuck 24 servers into a 3U enclosure" --> 8/U "WebBunker units can hold 12 processors [in 2U]" --> 6/U For PowerPC I found 32/U to 40/U, in increments of 9U. See www.mc.com for an example. The processor gets you 4 (four!) floating-point fused multiply-add operations per cycle, typically at 400 MHz. Being optimistic, that's a teraflop in 9U. > Liquid air cooled, maybe... Nope, plain old air or conduction. If you're going to rant about off-topic junk, at least try to throw in a few useful references so people can check facts and maybe take advantage of whatever it is you're ranting about. (yeah, yeah, sorry about the VGA console thing) ^ permalink raw reply [flat|nested] 36+ messages in thread
[parent not found: <mailman.993067219.29993.linux-kernel2news@redhat.com>]
* Re: [OT] Threads, inelegance, and Java [not found] ` <mailman.993067219.29993.linux-kernel2news@redhat.com> @ 2001-06-20 20:16 ` Pete Zaitcev 2001-06-20 22:05 ` Alan Cox 0 siblings, 1 reply; 36+ messages in thread From: Pete Zaitcev @ 2001-06-20 20:16 UTC (permalink / raw) To: linux-kernel > This [code morphing and binary tranlation] > was set off to provide compensation for the biggest hurdle > of VLIW design - insane code size and partially huge memmory > bus bandwidth designs due to this. (Why do you think the itanim > sucks on integer performance?) First, Merced does not suck on integer performance. It does about 300 SPEC CPU2000 at 733MHz, give or take, subject to compiler improvements. That blows all RISCs out of the water (except Alpha, yet. The best result they submitted is 511 base 533 peak at 833MHz). > [...] Well but in relity underclocked modern > design optimized for power consumtions beat the transmeta > chip easly: Geode, and the recently announced VIA chip to name a few. Man, where do you get this falsehood. TM-5400 is way, way faster than Geode (several times for any benchmark). This is exactly the reason why Transmetians love to showcase DVD playing and other performance related stuff - it is where they beat Geode. Geode's performance is quite adequate for kiosk/POS app and it's a formiddable competitor for anything that needs no performance. > In comparision to chip design esp. targetted at low power consumtion > the transmeta chip is laughable: this ARM please! My psion > beats *ANY* chip from them by huge magnitude. "Beats" by what metric? Sucks harder? -- Pete ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 20:16 ` Pete Zaitcev @ 2001-06-20 22:05 ` Alan Cox 0 siblings, 0 replies; 36+ messages in thread From: Alan Cox @ 2001-06-20 22:05 UTC (permalink / raw) To: Pete Zaitcev; +Cc: linux-kernel > This is exactly the reason why Transmetians love to > showcase DVD playing and other performance related > stuff - it is where they beat Geode. Geode's performance > is quite adequate for kiosk/POS app and it's a formiddable Geode is jut about capable of MPEG1. The VIA processors are extremely interesting in the price/performance positioning. Neither of them are going to win a power consumption battle with an ARM ^ permalink raw reply [flat|nested] 36+ messages in thread
[parent not found: <20010621000725.A24672@werewolf.able.es>]
* Re: [OT] Threads, inelegance, and Java [not found] ` <20010621000725.A24672@werewolf.able.es> @ 2001-06-20 19:15 ` Rob Landley 2001-06-21 9:40 ` Jonathan Morton [not found] ` <mailman.993083762.1429.linux-kernel2news@redhat.com> 1 sibling, 1 reply; 36+ messages in thread From: Rob Landley @ 2001-06-20 19:15 UTC (permalink / raw) To: J . A . Magallon, landley; +Cc: Aaron Lehmann, hps, linux-kernel On Wednesday 20 June 2001 18:07, J . A . Magallon wrote: > On 20010620 Rob Landley wrote: > What do you worry about caches if every bytecode turns into a jump and more > code ? 'cause the jump may be overlappable with extra execution cores in RISC and VLIW? I must admit, I've never actually seen somebody try to assembly-level optimize a non-JIT java VM before. JIT always struck me as a bit of a kludge... > And that native code is not in a one-to-one basis with respect to > bytecode, but many real machine code instructions to exec a bytecode op ? Sure. But if they're honestly doing real work, that's ok then. (If they're setting up and tearing down unnecessary state, that's bad. I must admit the friction between register and stack based programming models was pretty bad in the stuff I saw back around JavaOS, which was long enough ago I can't say I remember the details as clearly as I'd like...) Then again JavaOS was an abortion on top of Slowaris. Why they didn't just make a DPMI DOS port with an SVGA AWT and say "hey, we're done, and it boots off a single floppy", I'll never know. I mean, they were using green threads and a single task for all threads ANYWAY... (Actually, I know exactly why. Sun thinks in terms of Solaris, even when it's totally the wrong tool for the job. Sigh...) Porting half of Solaris to Power PC for JavaOS has got to be one of the most peverse things I've seen in my professional career. > I have seen school projects with interfaces done in java (to be 'portable') > and you could go to have a coffee while a menu pulled down. Yeah, but the slowness there comes from the phrase "school project" and not the phrase "done in java". I've seen menuing interfaces on a 1 mhz commodore 64 that refreshed faster than the screen retrace, and I've WRITTEN java programs that calculated animated mathematical function plots point by point in realtime on a 486. > Would you implement a search funtion into a BIG BIG database in java ? You mean spitting out an SQL request that goes to a backend RDMS? I've done it. (Via MQSeries to DB2.) Interestingly, a rather large chunk of DB2 itself seems to be implemented in Java Dunno how much, though. Probably not the most performance critical sections. But it uses a heck of a lot of it... > No, you give a java interface to C or C++ code. A large part of this is "not reinventing the wheel". Also, I'd like to point out that neither Java 1.0 nor Java 1.1 had an API to truncate an existing file. (I pointed that out to Mark English at Sun back when I worked at IBM, and apparently nobody'd ever noticed it before me. Fixed in 1.2, I'm told.) > Until java can be efficiently compiled, it is no more than a toy. I haven't played with Jikes. > Then why do you use Java ? If you just write few objects with many methods > you are writing VisualBasic. That was below the belt. I'm trying to figure out if you've just violated a corolary of Godwin's law with regards to language discussions, but I'll let it pass and answer seriously. Because used that way, Java doesn't suck nearly as badly as visual basic does? (My cumulative life experience trying to program in visual basic adds up to about three hours, so I don't consider myself an authority on it. But I've had enough exposure to say it sucks based on actually trying to use it.) That and it was developed on OS/2 to be deployed on (at least) windows 95, 98, and power macintosh? I still had threading inherent in the language. The graphics() class is actually a fairly nice API for doing simple 2d line drawing stuff in a portable way. (It is too, except for fonts. If you don't use any heavyweight AWT objects, and you're religious about using fontmetrics to measure your text, you can actually get pretty portable displays.) I still had the GOOD bits of C++ syntax without having to worry about conflicting virtual base classes. It's TRULY object oriented, with metaclasses and everything. > See above. Traversing a list of objects to draw is not time consuming, > implementing a zbuffer or texturing is. Try to implement a zbuffer in java. I'll top that, I tried to implement "deflate" in java 1.0. (I was porting info-zip to java when java 1.1 came out. Yeah, the performance sucked. But the performance of IBM's OS/2 java 1.0 jdk sucked compared to anything anybody's using today (even without JIT). > The problem with java is that people tries to use it as a general purpose > programming language, and it is not efficient. It can be used to organize > your program and to interface to low-level libraries written in C. But > do not try to implement any fast path in java. I once wrote an equation parser that took strings, substituted values for variables via string search and replace, and performed the calculation the string described. It did this for every x pixel in a 300 pixel or so range to get the resulting y value, then iterated through the array thus created and played connect the dots to graph the function. On a 486 it could update the display about four times a second as different values were plugged in. That may not have been nearly as fast as it would have been in C, but it was fast enough for me. (And most of that was the darn string creation to substitue in the values, but I never got around to doing a more efficient variable lookup table method because I didn't have to, the performance was good enough.) > If java or pyton were so efficient, you could write a ray-tracer or a > database search engine in java or python, etc. Look, write it in java, not > use a java interface to a binary module. And it'd be even faster if you wrote it in hand optimized assembly. Your point being?. Somebody wrote a distributed.net key cracker in Java, which is about 5% as efficient as the hand-optimized assembly native code key crackers people usualy used. Benchmarking one of those on a pentium desktop, it still beat my little 486 laptop using the native thing, which had been the height of technology about six years earlier. And I can leave the java key cracker running for an hour or two in a web browser at the local library without anyone getting too upset. I can't do that with a native one. (What they object to is installing software, you see. Not running it.) I'm upset that Red Hat 7.1 won't install on that old laptop because it only has 24 megs of ram and RedHat won't install in that. I haven't heard anybody else complain about that. (Their questionable compiler descisions, sure. The security, of course. The fact they will no longer install in 16 megs of ram, no.) There's a gameboy emulator written in java out on the net somewhere that plays gameboy games in a web page as fast as the original gameboys used to. I find that useful. Attacking java because of the performance is like attacking C because its memory management system is held together with duct tape (stack overflows, memory leaks, wild pointers, all so easy to do in C). It's a complete red herring if you ask me... Rob ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 19:15 ` Rob Landley @ 2001-06-21 9:40 ` Jonathan Morton 0 siblings, 0 replies; 36+ messages in thread From: Jonathan Morton @ 2001-06-21 9:40 UTC (permalink / raw) To: landley, J . A . Magallon; +Cc: Aaron Lehmann, hps, linux-kernel > > I have seen school projects with interfaces done in java (to be 'portable') >> and you could go to have a coffee while a menu pulled down. > >Yeah, but the slowness there comes from the phrase "school project" and not >the phrase "done in java". I've seen menuing interfaces on a 1 mhz commodore >64 that refreshed faster than the screen retrace, and I've WRITTEN java >programs that calculated animated mathematical function plots point by point >in realtime on a 486. Sure, but the Commodore had highly-optimised code working for it. I think I'm a long way beyong the "school project" stage, but I've had REAL difficulty getting Java to perform well. As one of the assignments in my 1st-year CompSci course, we got to write a program which checked for balanced braces in a source file. We were supposed to do this in Java - at the time, the Blackdown 1.1.8 JVM was current. I and a classmate used a 160K C source file from a MUD as a test load. He ran it multiple times on the Solaris system provided for 1st-year programming, I ran it on my Linux 486. My first effort was a nice "clean" OOP-friendly implementation which made heavy use of Java's nice-looking String operators. As anyone who has worked with Java will be able to guess, this was also an extremely slow and inefficient implementation. I recall it took upwards of 2 minutes to parse that source file and confirm that it had properly-paired braces. This on a machine which now handles DNS, e-mail, webcaching, webserving, and sometimes gateway duties for my other machines. Much work later, I garnered an implementation that used more C-like operators and looked much messier, but ran 6 times quicker. Most of the work went into eliminating object creation and destruction, which tickled Java's extremely slow garbage collection. I still don't fully understand why free() has no equivalent in Java. My classmate got his version running even faster, but I don't know how he managed it. Then I quickly hacked up a C version of the same program using the same algorithm, and compiled it using GCC. It immediately ran 6 times quicker still, and consumed less than a 50th of the memory. With 28Mb RAM, I could only run 4 copies of the Java program in parallel before the machine started thrashing, but the C version got to 20 copies before the terminal simply got too sluggish to start any more (the machine was not thrashing, it was just under severe load). All 20 copies completed in less time than a single instance of the original Java implementation. Incidentally, I've used VB as well, and it's even worse. I couldn't get a P75 to drive a stepper-motor at more than 4 steps per second, and that was hardly a complex algorithm. Given that I learned basic programming techniques using BBC BASIC on a 2MHz 6502, I *know* that's pathetic even for interpreted BASIC. When an ARM610 at 40MHz running interpreted BASIC can outperform highly-optimised 16-bit x86 assembly on a 486SX/40, you know Acorn got their interpreter done better than M$ did. > > Until java can be efficiently compiled, it is no more than a toy. > >I haven't played with Jikes. Nor have I. But frankly, I don't care. Neither C, nor C++, nor Java make good beginner's languages. The former two are efficient and safe if handled with some care. The latter is safe but not efficient even in an expert's hands. >I still >had the GOOD bits of C++ syntax without having to worry about conflicting >virtual base classes. Hmmmm... a well-designed C++ system doesn't have to worry about that either. C++'s features are only bad if misused - it's an expert's language for crying out loud. > > See above. Traversing a list of objects to draw is not time consuming, > > implementing a zbuffer or texturing is. Try to implement a zbuffer in java. > >I'll top that, I tried to implement "deflate" in java 1.0. (I was porting >info-zip to java when java 1.1 came out. > >Yeah, the performance sucked. But the performance of IBM's OS/2 java 1.0 jdk >sucked compared to anything anybody's using today (even without JIT). That reminds me... allocating a two-dimensional array in Java is a *real* *pain*. You have to declare the darn thing as an array of arrays, and then allocate that array of arrays explicitly, and then loop through that bloody array and allocate each subarray individually! The alternative is to allocate a one-dimensional array and use what amounts to heavy pointer arithmetic, which can't be cheap on the CPU. > > The problem with java is that people tries to use it as a general purpose >> programming language, and it is not efficient. It can be used to organize >> your program and to interface to low-level libraries written in C. But >> do not try to implement any fast path in java. > >I once wrote an equation parser that took strings, substituted values for >variables via string search and replace, and performed the calculation the >string described. It did this for every x pixel in a 300 pixel or so range >to get the resulting y value, then iterated through the array thus created >and played connect the dots to graph the function. On a 486 it could update >the display about four times a second as different values were plugged in. > >That may not have been nearly as fast as it would have been in C, but it was >fast enough for me. (And most of that was the darn string creation to >substitue in the values, but I never got around to doing a more efficient >variable lookup table method because I didn't have to, the performance was >good enough.) I'd really like to see how you did that - my experience of Java is that you'd need some extremely clever code to handle such an operation even that fast. I had to move my main 1st-year project from the 486 to a PowerBook (which benchmarks considerably faster than a P166/MMX) and Apple's JVM before it performed adequately for presentation. Incidentally, that same project refused to compile on Sun's JDK under Solaris - oh, the irony. My team received the runners-up prize for that effort. > > If java or pyton were so efficient, you could write a ray-tracer or a >> database search engine in java or python, etc. Look, write it in java, not >> use a java interface to a binary module. > >And it'd be even faster if you wrote it in hand optimized assembly. Your >point being?. You can write a raytracer and a database in Java or Python all you like, or even VB if you're a masochist. Just don't complain when it eats 5x the RAM and is 50x slower than the competition which uses bogstandard C or C++. Raytracing is slow enough on state-of-the-art hardware and well-optimised C code, as it is. From what I hear, databases need all the efficiency they can get too. >Somebody wrote a distributed.net key cracker in Java, which is about 5% as >efficient as the hand-optimized assembly native code key crackers people >usualy used. Benchmarking one of those on a pentium desktop, it still beat >my little 486 laptop using the native thing, which had been the height of >technology about six years earlier. And I can leave the java key cracker >running for an hour or two in a web browser at the local library without >anyone getting too upset. I can't do that with a native one. (What they >object to is installing software, you see. Not running it.) And this increases your chances of finding the key by very little for a significant amount of effort. Big deal. >I'm upset that Red Hat 7.1 won't install on that old laptop because it only >has 24 megs of ram and RedHat won't install in that. I haven't heard anybody >else complain about that. (Their questionable compiler descisions, sure. >The security, of course. The fact they will no longer install in 16 megs of >ram, no.) SuSE 4.3 won't do a network install with less than 75Mb to it's name, but it'll install from disc in much less than that. I persuaded an 8Mb 486 to start running the Red Hat 6.1 installer by running fdisk, mkswap and swapon by hand from that nice little terminal they give you on tty2. However it thrashed for several days before I told it to give up and used a spare machine with more RAM to perform the install. >There's a gameboy emulator written in java out on the net somewhere that >plays gameboy games in a web page as fast as the original gameboys used to. >I find that useful. Fair enough. Just remember that the PC you're running it on is hundreds of times more powerful than the machine it's emulating. I'd like to see the same trick done for the Gameboy Advance though. >Attacking java because of the performance is like attacking C because its >memory management system is held together with duct tape (stack overflows, >memory leaks, wild pointers, all so easy to do in C). It's a complete red >herring if you ask me... Actually, it isn't. An experienced coder can use techniques to avoid C's pitfalls by doing it right. Java's performance and resource-hogging problems hurt everyone, even the experts. Now, don't get me wrong here. Java does have uses, in applications where fast development time and portability are more important than performance or resource utilisation. However, that set of applications is a lot smaller than most Java defenders realise. -- -------------------------------------------------------------- from: Jonathan "Chromatix" Morton mail: chromi@cyberspace.org (not for attachments) website: http://www.chromatix.uklinux.net/vnc/ geekcode: GCS$/E dpu(!) s:- a20 C+++ UL++ P L+++ E W+ N- o? K? w--- O-- M++$ V? PS PE- Y+ PGP++ t- 5- X- R !tv b++ DI+++ D G e+ h+ r++ y+(*) tagline: The key to knowledge is not to rely on people to teach you it. ^ permalink raw reply [flat|nested] 36+ messages in thread
[parent not found: <mailman.993083762.1429.linux-kernel2news@redhat.com>]
* Re: [OT] Threads, inelegance, and Java [not found] ` <mailman.993083762.1429.linux-kernel2news@redhat.com> @ 2001-06-21 3:13 ` Pete Zaitcev 2001-06-21 13:59 ` Rob Landley 0 siblings, 1 reply; 36+ messages in thread From: Pete Zaitcev @ 2001-06-21 3:13 UTC (permalink / raw) To: landley; +Cc: linux-kernel > Then again JavaOS was an abortion on top of Slowaris. [...] This is a false statemenet, Rob. It was an abortion, all right, but not related to Solaris in any way at all. JavaOS existed in two flavours minimum, which had very little in common. The historically first of them (Luna), was a home-made executive with pretty rudimentary abilities. I must admit I am not intimately familiar with its genesis. A part of it was related to the JavaOS running on Sun 701 chip, but what came first, I cannot tell. Second flavour of JavaOS was made on top of Chorus, and, _I think_, used large parts of Luna in the the JVM department, but it had decent kernel, with such novations as a device driver interface :) > make a DPMI DOS port with an SVGA AWT and say "hey, we're done, and it boots > off a single floppy", I'll never know. Such a thing existed. I do not remember its proper name, but I remember that it booted from hard disk. Floppy was too small for it. > Porting half of Solaris to Power PC for JavaOS has got to be one of the most > peverse things I've seen in my professional career. I never heard of PPC port of either of JavaOSes, although Chorus runs on PPC. Perhaps this is what you mean. Solaris for PPC existed, but never was widespread. It did not have JVM bundled. > I'm upset that Red Hat 7.1 won't install on that old laptop because it only > has 24 megs of ram and RedHat won't install in that. [...] You blew adding a swap partition, I suspect... -- Pete ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-21 3:13 ` Pete Zaitcev @ 2001-06-21 13:59 ` Rob Landley 0 siblings, 0 replies; 36+ messages in thread From: Rob Landley @ 2001-06-21 13:59 UTC (permalink / raw) To: Pete Zaitcev, landley; +Cc: linux-kernel On Wednesday 20 June 2001 23:13, Pete Zaitcev wrote: > > Then again JavaOS was an abortion on top of Slowaris. [...] > > This is a false statemenet, Rob. It was an abortion, all right, > but not related to Solaris in any way at all. I worked on the sucker for six months at IBM in 1997. I don't know if the code we worked on is the code you're thinking of, but we had a unix kernel (which my coworkers SAID was solaris) with a JVM running on top of it as the init task. Ported to Power PC by some overseas IBM lab (might have been the japanese guys). We had two flavors of it to test, one the Power PC build and one the Intel build, and to make the Intel build work first we installed Solaris for Intel. Other fun little details included that when I left IBM it still couldn't read from the hard drive, so the entire system TFTP'd itself through the network at boot, including a compressed ramdisk image containing Lotus Desktop. The machine required 64 megs of memory to run that (~32 megs or so of which was for the ramdisk, and no it didn't run executables straight out of the ramdisk, it copied them into MORE ram to run). > JavaOS existed in two flavours minimum, which had very little > in common. The historically first of them (Luna), was a home-made > executive with pretty rudimentary abilities. I believe that's what we were using, and that home-made executive was a stripped down version of the solaris kernel. > Second flavour of JavaOS was made on top of > Chorus, and, _I think_, used large parts of Luna in the the > JVM department, but it had decent kernel, with such novations > as a device driver interface :) You haven't lived until you've seen java code, with inline assembly, claiming to be a video framebuffer device driver thing. That sort of thing gives you a real appreciation for the portions of your life where you DON'T have to deal with that kind of thing. I only had to go into there to debug stuff though, mostly I was working on the application end of things. (Taking third party closed source beta-release nonsense from people who wanted a single point of contact with IBM who turned out to be someone in Poughkipsee who had quit the company a couple weeks back. So it didn't work, we didn't have source, the people who supplied it wouldn't talk to us, and when we did trace a problem to the JavaOS code and reported it to Sun they went "we fixed that over a month ago and we've been sending you twice-weekly drops!" But of course our codebase didn't sync with their codebase more than once a month or so because there was so much porting effort involved... And you wonder why I quit... > Such a thing existed. I do not remember its proper name, > but I remember that it booted from hard disk. Floppy > was too small for it. Maybe. Wouldn't have been nearly as big as JavaOS, though. FAR better suited to an embedded system... > > Porting half of Solaris to Power PC for JavaOS has got to be one of the > > most peverse things I've seen in my professional career. > > I never heard of PPC port of either of JavaOSes, although > Chorus runs on PPC. Perhaps this is what you mean. It was called "JavaOS for Business"... http://www.javaworld.com/javaworld/jw-05-1998/jw-05-idgns.javaos.html And was killed about a year later... http://news.cnet.com/news/0-1003-200-346375.html?tag=bplst I worked on it for six months in the second half of 1997. > Solaris for PPC existed, but never was widespread. > It did not have JVM bundled. We mostly used AIX on the PPC systems that weren't directly testing the new code. > > I'm upset that Red Hat 7.1 won't install on that old laptop because it > > only has 24 megs of ram and RedHat won't install in that. [...] > > You blew adding a swap partition, I suspect... This was before it let me run fdisk or Disk Druid. I'll try again this weekend... > -- Pete Rob ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 11:25 ` Rob Landley 2001-06-20 17:36 ` Martin Dalecki [not found] ` <20010621000725.A24672@werewolf.able.es> @ 2001-06-21 16:48 ` Adam Sampson 2 siblings, 0 replies; 36+ messages in thread From: Adam Sampson @ 2001-06-21 16:48 UTC (permalink / raw) To: landley; +Cc: Aaron Lehmann, hps, linux-kernel Rob Landley <landley@webofficenow.com> writes: > > However, the very concept of Java encourages not caring about > > "performance, system-design or any elegance whatsoever". > The same arguments were made 30 years ago about writing the OS in a high > level language like C rather than in raw assembly. 30 years ago we didn't have C compilers that produce better code than you can write by hand. ;) -- Adam Sampson <azz@gnu.org> <URL:http://azz.us-lot.org/> ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 11:25 ` [OT] Threads, inelegance, and Java Aaron Lehmann 2001-06-20 11:25 ` Rob Landley @ 2001-06-20 15:12 ` Ben Greear 2001-06-20 15:44 ` Russell Leighton ` (2 more replies) 2001-06-20 18:09 ` Henning P. Schmiedehausen 2001-06-20 19:05 ` William T Wilson 3 siblings, 3 replies; 36+ messages in thread From: Ben Greear @ 2001-06-20 15:12 UTC (permalink / raw) To: Aaron Lehmann; +Cc: hps, linux-kernel Aaron Lehmann wrote: > > On Wed, Jun 20, 2001 at 09:00:47AM +0000, Henning P. Schmiedehausen wrote: > > Just the fact that some people use Java (or any other language) does > > not mean, that they don't care about "performance, system-design or > > any elegance whatsoever" [2]. > > However, the very concept of Java encourages not caring about > "performance, system-design or any elegance whatsoever". If you cared System-design and elegance are easy to get in Java, and in fact are independent of language. Good c code will beat Java in most cases, performance wise, but lately the difference has become small enough not to matter for most applications. Speed is not the most important feature in a great many programs, otherwise we'd all be using assembly still. > about any of those things you would compile to native code (it exists > for a reason). Need run-anywhere support? Distribute sources instead. When was the last time you wrote a large cross-platform GUI that just worked on other platforms, without any additional tweaking, after you developed it on your Linux machine? -- Ben Greear <greearb@candelatech.com> <Ben_Greear@excite.com> President of Candela Technologies Inc http://www.candelatech.com ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 15:12 ` Ben Greear @ 2001-06-20 15:44 ` Russell Leighton 2001-06-20 16:32 ` Davide Libenzi 2001-06-20 16:53 ` Larry McVoy 2001-06-20 21:14 ` Aaron Lehmann 2 siblings, 1 reply; 36+ messages in thread From: Russell Leighton @ 2001-06-20 15:44 UTC (permalink / raw) To: Ben Greear, linux-kernel Ben Greear wrote: <snip> > System-design and elegance are easy to get > in Java, and in fact are independent of language. Good c code will beat > Java in most cases, performance wise, but lately the difference has become > small enough not to matter for most applications. Rather a sweeping statement. I don't buy it...depends what you mean by "most applications". I bet 90% of the "most" would be better served by being written in Visual Basic (or Perl, or Python, or PHP pick your poison for a very high level language)...and if you really care about resource usage and/or performance you don't want a very high high level language and Java does not leap to mind as part of the set of credible alternatives. I had a company that gaves us a tech briefing of their system. They dumped mega-bucks into multiple Sun E10000s they needed to run their Java apps... the were proud of their scalable design, just add more hardware! True, the high level design was fine and trivially scalable w/more hw BUT what a waste, if their app was done in C they could have had it run faster and it would have cost them significantly less (in the millions of $$). The lack of a good operating system _dependent_ interface makes running fast hard in Java when you need to do IO... yes, there is always JNI so you can add a little C to mmap a file or whatever, but if you are doing that, you slide down the slippery slope of justifying Java. That's just one aspect, don't get me started (e.g., memory mangement, method call overhead, type checking, yuk). > Speed is not the most > important feature in a great many programs, otherwise we'd all be using > assembly still. Agreed. It's a judgement call. I just think that Java is not particularly good at anything (jack of all trades master of none). -- --------------------------------------------------- Russell Leighton russell.leighton@247media.com --------------------------------------------------- ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 15:44 ` Russell Leighton @ 2001-06-20 16:32 ` Davide Libenzi 2001-06-20 16:54 ` Russell Leighton ` (2 more replies) 0 siblings, 3 replies; 36+ messages in thread From: Davide Libenzi @ 2001-06-20 16:32 UTC (permalink / raw) To: Russell Leighton; +Cc: linux-kernel, Ben Greear On 20-Jun-2001 Russell Leighton wrote: > Ben Greear wrote: > <snip> > >> System-design and elegance are easy to get >> in Java, and in fact are independent of language. Good c code will beat >> Java in most cases, performance wise, but lately the difference has become >> small enough not to matter for most applications. > > Rather a sweeping statement. > > I don't buy it...depends what you mean by "most applications". > I bet 90% of the "most" would be better served by > being written in Visual Basic (or Perl, or Python, or PHP pick your poison > for a very high level language)...and if you really care about > resource usage and/or performance you don't > want a very high high level language and Java does not leap to mind > as part of the set of credible alternatives. > > I had a company that gaves us a tech briefing of their system. > They dumped mega-bucks into multiple Sun E10000s they needed to run their > Java apps... > the were proud of their scalable design, just add more hardware! > True, the high level design was fine and trivially scalable w/more hw BUT > what a waste, if their app was done in C they could have > had it run faster and it would have cost them significantly less (in the > millions of $$). 1) HW is cheaper than software engineers time 2) to find Java developers is easier than to find C developers 3) the ETA of the same project developed in Java is shorter than the same project done in C This depend heavily on the type of project but these are points that every software Co. has to face when starting a new project. - Davide ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 16:32 ` Davide Libenzi @ 2001-06-20 16:54 ` Russell Leighton 2001-06-20 17:03 ` Tony Hoyle 2001-06-20 18:14 ` Henning P. Schmiedehausen 2 siblings, 0 replies; 36+ messages in thread From: Russell Leighton @ 2001-06-20 16:54 UTC (permalink / raw) To: Davide Libenzi; +Cc: linux-kernel, Ben Greear ....this is getting way OT...everyone wants make Linux work well for all programming methods as long as poor compromises are not made...most of the people that matter on this list can define "poor" so I am not worried about the future of Linux. Last 0.02 below and this should be take off the list. Davide Libenzi wrote: > <snip> > 1) HW is cheaper than software engineers time Most of the time this is true...kinda depends on the project and other constraints. I'd hate to make a system that has poor $$/hw when scaling it just because the programmers are lazy. > > > 2) to find Java developers is easier than to find C developers Good developers are hard to find , period. My experience is that there are a whole bunch of people out there that have ONLY coded Java and they should not be let near a computer. > > > 3) the ETA of the same project developed in Java is shorter than the same > project done in C > Very debatable ... and the point I was making was not about C ... for example, Java servlets and JSP are probably a very big part of the Java app "world"...I'd take PHP over that any day for apps that require a DHTML GUI on a database...just depends on what you are doing and your requirements...would you write a device driver in Java?... what I find stunning about Java (and I said this before) is that : "Java is not particularly good at anything (jack of all trades master of none)." > > This depend heavily on the type of project but these are points that every > software Co. has to face when starting a new project. > Yup...hard decisions. No silver bullet. > > - Davide -- --------------------------------------------------- Russell Leighton russell.leighton@247media.com --------------------------------------------------- ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 16:32 ` Davide Libenzi 2001-06-20 16:54 ` Russell Leighton @ 2001-06-20 17:03 ` Tony Hoyle 2001-06-20 15:10 ` Rob Landley 2001-06-20 18:14 ` Henning P. Schmiedehausen 2 siblings, 1 reply; 36+ messages in thread From: Tony Hoyle @ 2001-06-20 17:03 UTC (permalink / raw) To: Davide Libenzi; +Cc: Russell Leighton, linux-kernel, Ben Greear Davide Libenzi wrote: > 1) HW is cheaper than software engineers time Compared to E1000s??? You must be talking about some *really* expensive engineers! > 2) to find Java developers is easier than to find C developers Depends on where you are in the world. It's certainly not true here (everyone knows C/C++... Haven't had a java developer apply for a job in months). > 3) the ETA of the same project developed in Java is shorter than the same > project done in C Depends on the developers. Good developers can churn out the same project to roughly the same timescale in any language (except possibly assembly). Java is useful if you need the cross platform bit & the target users aren't technically savvy enough to recompile. For an in-house app where you control the hardware you'd be better off using a C/C++/RAD & doing it native. Tony (Just came back from a .NET conference... MS are currently rewriting all their apps in bytecode... whoopee... They're even porting *games* to run on it. I can see it now 'MS Flight Simulator .NET' (Requires quad Pentium 4 1.6Ghz minimum) :-o ) Tony -- "Two weeks before due date, the programmers work 22 hour days cobbling an application from... (apparently) one programmer bashing his face into the keyboard." -- Dilbert tony@hoyle.geek http://www.tony.hoyle.geek tmh@nothing-on.tv http://www.nothing-on.tv ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 17:03 ` Tony Hoyle @ 2001-06-20 15:10 ` Rob Landley 2001-06-20 20:23 ` Tony Hoyle 2001-06-20 20:40 ` Richard B. Johnson 0 siblings, 2 replies; 36+ messages in thread From: Rob Landley @ 2001-06-20 15:10 UTC (permalink / raw) To: Tony Hoyle, Davide Libenzi; +Cc: Russell Leighton, linux-kernel, Ben Greear On Wednesday 20 June 2001 13:03, Tony Hoyle wrote: > (Just came back from a .NET conference... MS are currently rewriting > all their apps in bytecode... whoopee... They're even porting *games* > to run on it. I can see it now 'MS Flight Simulator .NET' (Requires > quad Pentium 4 1.6Ghz minimum) :-o ) Well, that ought to make Intel happy. The price of a new desktop box around these parts has dropped to about $250, and that comes preassembled. $25 for ram, $80 hard drive, $40 processor in ~$30 motherboard, and the floppy, case, power supply, and keyboard are all a rounding error. The monitor's still expensive, but those are recycled from system to system and you can get a 17 inch for $99 from goodwill computers. So how exactly DOES MS expect to stop the Linux folks from reverse engineering .NET apps? Patents? Giving up on the client side and moving to an ASP business model (toe to toe with AOL)? Constant gratuitous compatability changes to try to prevent all those nasty GPL viruses from evolving an immunity to their new proprietary drug? (Without, of course, being obvious enough to trigger a third antitrust trial after the 1995 and 1998 ones...) Just curious... > Tony ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 15:10 ` Rob Landley @ 2001-06-20 20:23 ` Tony Hoyle 2001-06-21 8:12 ` Henning P. Schmiedehausen 2001-06-20 20:40 ` Richard B. Johnson 1 sibling, 1 reply; 36+ messages in thread From: Tony Hoyle @ 2001-06-20 20:23 UTC (permalink / raw) To: landley; +Cc: Davide Libenzi, Russell Leighton, linux-kernel, Ben Greear Rob Landley wrote: > So how exactly DOES MS expect to stop the Linux folks from reverse > engineering .NET apps? Patents? Giving up on the client side and moving to > an ASP business model (toe to toe with AOL)? Constant gratuitous > compatability changes to try to prevent all those nasty GPL viruses from > evolving an immunity to their new proprietary drug? (Without, of course, > being obvious enough to trigger a third antitrust trial after the 1995 and > 1998 ones...) They probably *want* people to port the .NET VM to Linux. You should have seen their diagrams... Lots of pretty boxes saying how the various parts of .NET work and a small greyed out area at the bottom saying 'Win32'. They kept saying 'Cross platform' and 'Open standards' (the VM* has been submitted to ECMA apparently).... Of course when that happens everyone will continue using MS software, but on top of their chosen OS. MS make more $$$ (we keep buying Exchange, Office, etc. but running them on Linux) and they are happy. MS Exchange runs on AS400/Solaris/etc., so it becomes an 'Enterprise' solution that PHBs throughout the world inflict on us, and MS make even *more* $$$. Tony * aka. 'Common Language Runtime' -- "Two weeks before due date, the programmers work 22 hour days cobbling an application from... (apparently) one programmer bashing his face into the keyboard." -- Dilbert tony@hoyle.geek http://www.tony.hoyle.geek tmh@nothing-on.tv http://www.nothing-on.tv ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 20:23 ` Tony Hoyle @ 2001-06-21 8:12 ` Henning P. Schmiedehausen 0 siblings, 0 replies; 36+ messages in thread From: Henning P. Schmiedehausen @ 2001-06-21 8:12 UTC (permalink / raw) To: linux-kernel Tony Hoyle <tmh@magenta-netlogic.com> writes: >'Win32'. They kept saying 'Cross platform' and 'Open standards' (the >VM* has been submitted to ECMA apparently).... Relax. That's their stunt at Sun. Once they killed the Java VM (that's what they hope), they will not give a hoot about the "Standards" they helped to create. Note that in all their "open" and "cross platform" and "multi language" slides, the absence of Java screams loudly. Regards Henning -- Dipl.-Inf. (Univ.) Henning P. Schmiedehausen -- Geschaeftsfuehrer INTERMETA - Gesellschaft fuer Mehrwertdienste mbH hps@intermeta.de Am Schwabachgrund 22 Fon.: 09131 / 50654-0 info@intermeta.de D-91054 Buckenhof Fax.: 09131 / 50654-20 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 15:10 ` Rob Landley 2001-06-20 20:23 ` Tony Hoyle @ 2001-06-20 20:40 ` Richard B. Johnson 2001-06-20 20:48 ` Tony Hoyle 2001-06-20 21:00 ` Daniel Phillips 1 sibling, 2 replies; 36+ messages in thread From: Richard B. Johnson @ 2001-06-20 20:40 UTC (permalink / raw) To: Rob Landley Cc: Tony Hoyle, Davide Libenzi, Russell Leighton, linux-kernel, Ben Greear On Wed, 20 Jun 2001, Rob Landley wrote: > On Wednesday 20 June 2001 13:03, Tony Hoyle wrote: > > > (Just came back from a .NET conference... MS are currently rewriting > > all their apps in bytecode... whoopee... They're even porting *games* > > to run on it. I can see it now 'MS Flight Simulator .NET' (Requires > > quad Pentium 4 1.6Ghz minimum) :-o ) > Interesting... Hmmm. The first Flight Simulator to run on a PC ran on a 4.47 MHz PC/XT. The core state-machine ran off the BIOS timer-tick at 18.206 ticks/second. It was written in MASM by me. The graphics was written by many PROGRAM EXCHANGE contributors and was written in Turbo Pascal. I was the "SysOp" of that BBS system in the days when the Internet was nothing more than a college-to -college experiment. It required 256k or RAM and had the flight dynamics of a real Cessna 150 airplane. It was, therefore, difficult to fly. Once it was appropriated by M$, they removed the long-mode oscillations, the spiral instability, the roll/yaw coupling, and most of the inertial characteristics so that any kid could fly it. Then they sold it to millions of kids, getting enough money to buy out competition and control the new personal computer market. Early on, they didn't even hide the appropriated code although it needed to be booted directly. I disassembled the core and found exactly what I had written. Things changed of course as the product matured. It's probably written in Threaded-Java now (he ducks behind his keyboard). And, that's probably why it needs 4 CPUs and a 1.xx GHz clock. Cheers, Dick Johnson Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips). "Memory is like gasoline. You use it up when you are running. Of course you get it all back when you reboot..."; Actual explanation obtained from the Micro$oft help desk. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 20:40 ` Richard B. Johnson @ 2001-06-20 20:48 ` Tony Hoyle 2001-06-20 21:00 ` Daniel Phillips 1 sibling, 0 replies; 36+ messages in thread From: Tony Hoyle @ 2001-06-20 20:48 UTC (permalink / raw) To: root Cc: Rob Landley, Davide Libenzi, Russell Leighton, linux-kernel, Ben Greear Richard B. Johnson wrote: > It's probably written in Threaded-Java now (he ducks behind his keyboard). > And, that's probably why it needs 4 CPUs and a 1.xx GHz clock. s/Java/C#/ Same thing, but.... Tony -- "Two weeks before due date, the programmers work 22 hour days cobbling an application from... (apparently) one programmer bashing his face into the keyboard." -- Dilbert tony@hoyle.geek http://www.tony.hoyle.geek tmh@nothing-on.tv http://www.nothing-on.tv ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 20:40 ` Richard B. Johnson 2001-06-20 20:48 ` Tony Hoyle @ 2001-06-20 21:00 ` Daniel Phillips 2001-06-20 21:06 ` Richard B. Johnson 1 sibling, 1 reply; 36+ messages in thread From: Daniel Phillips @ 2001-06-20 21:00 UTC (permalink / raw) To: Richard B. Johnson, Rob Landley Cc: Tony Hoyle, Davide Libenzi, Russell Leighton, linux-kernel, Ben Greear On Wednesday 20 June 2001 22:40, Richard B. Johnson wrote: > Interesting... Hmmm. The first Flight Simulator to run on a PC > ran on a 4.47 MHz PC/XT. The core state-machine ran off the BIOS > timer-tick at 18.206 ticks/second. It was written in MASM by me. > The graphics was written by many PROGRAM EXCHANGE contributors and > was written in Turbo Pascal. I was the "SysOp" of that BBS system > in the days when the Internet was nothing more than a college-to > -college experiment. > > It required 256k or RAM and had the flight dynamics of a real > Cessna 150 airplane. I could have sworn I ran it on a 64K machine. Now, how did Bruce Artwick and Sublogic fit into this? -- Daniel ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 21:00 ` Daniel Phillips @ 2001-06-20 21:06 ` Richard B. Johnson 0 siblings, 0 replies; 36+ messages in thread From: Richard B. Johnson @ 2001-06-20 21:06 UTC (permalink / raw) To: Daniel Phillips Cc: Rob Landley, Tony Hoyle, Davide Libenzi, Russell Leighton, linux-kernel, Ben Greear On Wed, 20 Jun 2001, Daniel Phillips wrote: > On Wednesday 20 June 2001 22:40, Richard B. Johnson wrote: > > Interesting... Hmmm. The first Flight Simulator to run on a PC > > ran on a 4.47 MHz PC/XT. The core state-machine ran off the BIOS > > timer-tick at 18.206 ticks/second. It was written in MASM by me. > > The graphics was written by many PROGRAM EXCHANGE contributors and > > was written in Turbo Pascal. I was the "SysOp" of that BBS system > > in the days when the Internet was nothing more than a college-to > > -college experiment. > > > > It required 256k or RAM and had the flight dynamics of a real > > Cessna 150 airplane. > > I could have sworn I ran it on a 64K machine. > Not unless you got the original version that did RS-232C "graphics" on a CP/M Machine (Ampro Little Board). That ran with 48k usable. The GUI using Turbo Pascal required a lot of RAM. > Now, how did Bruce Artwick and Sublogic fit into this? > > -- > Daniel > Cheers, Dick Johnson Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips). "Memory is like gasoline. You use it up when you are running. Of course you get it all back when you reboot..."; Actual explanation obtained from the Micro$oft help desk. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 16:32 ` Davide Libenzi 2001-06-20 16:54 ` Russell Leighton 2001-06-20 17:03 ` Tony Hoyle @ 2001-06-20 18:14 ` Henning P. Schmiedehausen 2 siblings, 0 replies; 36+ messages in thread From: Henning P. Schmiedehausen @ 2001-06-20 18:14 UTC (permalink / raw) To: linux-kernel Davide Libenzi <davidel@xmailserver.org> writes: >On 20-Jun-2001 Russell Leighton wrote: [...] >> I had a company that gaves us a tech briefing of their system. >> They dumped mega-bucks into multiple Sun E10000s they needed to run their >> Java apps... >> the were proud of their scalable design, just add more hardware! >> True, the high level design was fine and trivially scalable w/more hw BUT >> what a waste, if their app was done in C they could have >> had it run faster and it would have cost them significantly less (in the >> millions of $$). >1) HW is cheaper than software engineers time >2) to find Java developers is easier than to find C developers >3) the ETA of the same project developed in Java is shorter than the same > project done in C 4) The Java project is easier ported from e.g. Windows to Linux or Solaris to Windows. Amen. You're right on spot. HW is cheap. Even E10K are cheap (relatively seen. ;-) ) Regards Henning -- Dipl.-Inf. (Univ.) Henning P. Schmiedehausen -- Geschaeftsfuehrer INTERMETA - Gesellschaft fuer Mehrwertdienste mbH hps@intermeta.de Am Schwabachgrund 22 Fon.: 09131 / 50654-0 info@intermeta.de D-91054 Buckenhof Fax.: 09131 / 50654-20 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 15:12 ` Ben Greear 2001-06-20 15:44 ` Russell Leighton @ 2001-06-20 16:53 ` Larry McVoy 2001-06-20 12:36 ` Rob Landley 2001-06-20 21:14 ` Aaron Lehmann 2 siblings, 1 reply; 36+ messages in thread From: Larry McVoy @ 2001-06-20 16:53 UTC (permalink / raw) To: Ben Greear; +Cc: Aaron Lehmann, hps, linux-kernel On Wed, Jun 20, 2001 at 08:12:29AM -0700, Ben Greear wrote: > Aaron Lehmann wrote: > > On Wed, Jun 20, 2001 at 09:00:47AM +0000, Henning P. Schmiedehausen wrote: > > > Just the fact that some people use Java (or any other language) does > > > not mean, that they don't care about "performance, system-design or > > > any elegance whatsoever" [2]. > > > > However, the very concept of Java encourages not caring about > > "performance, system-design or any elegance whatsoever". If you cared > > System-design and elegance are easy to get > in Java, and in fact are independent of language. Good c code will beat > Java in most cases, performance wise, but lately the difference has become > small enough not to matter for most applications. Speed is not the most > important feature in a great many programs, otherwise we'd all be using > assembly still. > > > about any of those things you would compile to native code (it exists > > for a reason). Need run-anywhere support? Distribute sources instead. > > When was the last time you wrote a large cross-platform GUI that just > worked on other platforms, without any additional tweaking, after you > developed it on your Linux machine? When was the last time you did the same thing? Nobody gets client side Java to work properly across all the platforms without a lot of tweaking. And the last time we did it was recently, the entire BK GUI is in tcl/tk, almost 20,000 lines of code (that would be 80,000 for you Java fans), and the GUI has revision history browsers, changeset browsers, source browsers, check in tools, diff tools, rename tools, file mergers, etc. It's pretty complete and it typically comes very close to just working across all platforms. The sort of differences we deal with are little things like the font names not being the same on Unix/NT. Java would *love* to be that good, it's nowhere near. Here's some more stats. We fired up a Java based file merge tool on a file and then did the same thing with our tk based one. The Java tool took 38MB to do the same merge as the tk one; the tk one took 4MB. And before you start saying "well, the tk one must be simplistic", we hand the Guiffy guy our test cases all the time and it fails them. So it's a pretty reasonable apples to apples, in fact, it's slanted in favor of the Java tool. We couldn't believe that Java was really that bad so our GUI guy, Aaron Kushner, sat down and rewrote the revision history browser in Java. On a 500 node graph, the Java tool was up to 85MB. The tk tool doing the same thing was 5MB. Note that we routinely run the tool on files with 4000 nodes, we can't even run the Java tool on files that big, it crashes. You could argue that we need custom widgets to do what we are doing, but that's lame. We don't need any custom widgets for tk, in fact, we are using straight tk, no extensions. So, yeah, we have done what you think we haven't done, and we've tried the Java way, we aren't making this stuff up. We run into Java fanatics all the time and when we start asking "so what toolkits do you use" we get back "well, actually, err, umm, none of them are any good so we write our own". That's pathetic. -- --- Larry McVoy lm at bitmover.com http://www.bitmover.com/lm ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 16:53 ` Larry McVoy @ 2001-06-20 12:36 ` Rob Landley 0 siblings, 0 replies; 36+ messages in thread From: Rob Landley @ 2001-06-20 12:36 UTC (permalink / raw) To: Larry McVoy, Ben Greear; +Cc: Aaron Lehmann, hps, linux-kernel On Wednesday 20 June 2001 12:53, Larry McVoy wrote: > We couldn't believe that Java was really that bad so our GUI guy, Aaron > Kushner, sat down and rewrote the revision history browser in Java. > On a 500 node graph, the Java tool was up to 85MB. The tk tool doing > the same thing was 5MB. Note that we routinely run the tool on files > with 4000 nodes, we can't even run the Java tool on files that big, > it crashes. I can second that. I recently mentioned an OS/2 abonination called Feature Install. Around 1996 I tried to port Feature Install to java 1.0. I got as far as the response file reading code, and reading in a 100k file exhausted available memory on the 32 megabyte machine I was working on. Remember, every single java object includes a BUNCH of data, including two semaphores (one event, one mutex) and who knows what else. On OS/2 the overhead of a java 1.0 object (new Object();) was 2 kilobytes! In later versions they got that down to around 200k, but it's still just rediculous. Every single String, every pointless Integer() wrapper, every temporarily created Stringbuffer() discarded by a + operation left there littering the stack. Plus I have yet to see a JVM that actually reclaims heap space after a garbage collect and gives it back to the OS. (You have to be able to relocate objects to do this at all reliably...) So if you create a large number of small objects, EVER, (tree, etc,) it's going to explode the heap and it'll never come down until the program exits. > So, yeah, we have done what you think we haven't done, and we've tried > the Java way, we aren't making this stuff up. We run into Java fanatics > all the time and when we start asking "so what toolkits do you use" we > get back "well, actually, err, umm, none of them are any good so we write > our own". That's pathetic. Also true. The Graphics class isn't too bad, and lightweight containers are actually quite nice. But swing is just insanely bad (I have to understand model/view/controller and select a look-and-feel just to pop up a dialog with an "ok" button?), and the only serious third party challenger to it was from MIcrosoft... Rob ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 15:12 ` Ben Greear 2001-06-20 15:44 ` Russell Leighton 2001-06-20 16:53 ` Larry McVoy @ 2001-06-20 21:14 ` Aaron Lehmann 2 siblings, 0 replies; 36+ messages in thread From: Aaron Lehmann @ 2001-06-20 21:14 UTC (permalink / raw) To: Ben Greear; +Cc: hps, linux-kernel On Wed, Jun 20, 2001 at 08:12:29AM -0700, Ben Greear wrote: > When was the last time you wrote a large cross-platform GUI that just > worked on other platforms, without any additional tweaking, after you > developed it on your Linux machine? I'd say that would be the last time I wrote something in GTK. SDL has similar portability. ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 11:25 ` [OT] Threads, inelegance, and Java Aaron Lehmann 2001-06-20 11:25 ` Rob Landley 2001-06-20 15:12 ` Ben Greear @ 2001-06-20 18:09 ` Henning P. Schmiedehausen 2001-06-20 19:05 ` William T Wilson 3 siblings, 0 replies; 36+ messages in thread From: Henning P. Schmiedehausen @ 2001-06-20 18:09 UTC (permalink / raw) To: linux-kernel Aaron Lehmann <aaronl@vitelus.com> writes: >On Wed, Jun 20, 2001 at 09:00:47AM +0000, Henning P. Schmiedehausen wrote: >> Just the fact that some people use Java (or any other language) does >> not mean, that they don't care about "performance, system-design or >> any elegance whatsoever" [2]. >However, the very concept of Java encourages not caring about >"performance, system-design or any elegance whatsoever". If you cared Care to elaborate? It's an application programming language, not a kernel hacker language, you know. I won't call Java the perfect solution for everything, but it's an useful tool for a certain type of applications. >for a reason). Need run-anywhere support? Distribute sources instead. >Once they are compiled they won't need to be reinterpreted on every >run. Thanks buddy. I've seen too many "#ifdef _SOLARIS_ || _LINUX && !_X86_" definition deserts to not wanting to do this again. Portability without os-specific tweaks for more than two or three platforms is a dream. And most if not all commercial platforms don't come with perl, python, tcl/tk or anything else installed. Many even without a (C-)compiler. Most without a C++-compiler. Regards Henning -- Dipl.-Inf. (Univ.) Henning P. Schmiedehausen -- Geschaeftsfuehrer INTERMETA - Gesellschaft fuer Mehrwertdienste mbH hps@intermeta.de Am Schwabachgrund 22 Fon.: 09131 / 50654-0 info@intermeta.de D-91054 Buckenhof Fax.: 09131 / 50654-20 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [OT] Threads, inelegance, and Java 2001-06-20 11:25 ` [OT] Threads, inelegance, and Java Aaron Lehmann ` (2 preceding siblings ...) 2001-06-20 18:09 ` Henning P. Schmiedehausen @ 2001-06-20 19:05 ` William T Wilson 3 siblings, 0 replies; 36+ messages in thread From: William T Wilson @ 2001-06-20 19:05 UTC (permalink / raw) To: Aaron Lehmann; +Cc: hps, linux-kernel On Wed, 20 Jun 2001, Aaron Lehmann wrote: > However, the very concept of Java encourages not caring about > "performance, system-design or any elegance whatsoever". If you cared > about any of those things you would compile to native code (it exists Native code does not help performance much and it doesn't help elegance or system design at all. Programmers put incredible amounts of effort into design with C-related languages because they have to. If they don't their program will not work. Java makes it easy to write bad code that (mostly) works. This might mean that the average quality of Java code is not as good as it might be. But it's not a good reason not to write in Java. Programmers that put the same amount of effort into their Java code that they would have in C/C++ will write better programs faster than they would have in C. The fact that most programmers will not do this is not the fault of the language, but the programmers. > for a reason). Need run-anywhere support? Distribute sources instead. Distributing source gives you run-anywhere support provided that everyone you distribute to has the same compiler that you do and that you haven't missed any platform specific endianness, word size or type definition problems, and that your program doesn't require any I/O that isn't in the standard libraries, especially graphics. ^ permalink raw reply [flat|nested] 36+ messages in thread
end of thread, other threads:[~2001-06-21 19:01 UTC | newest]
Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-06-21 4:10 [OT] Threads, inelegance, and Java Dan Kegel
-- strict thread matches above, loose matches on Subject: below --
2001-06-20 21:13 Holzrichter, Bruce
2001-06-20 21:17 ` Richard B. Johnson
2001-06-20 9:00 Alan Cox quote? (was: Re: accounting for threads) Henning P. Schmiedehausen
2001-06-20 11:25 ` [OT] Threads, inelegance, and Java Aaron Lehmann
2001-06-20 11:25 ` Rob Landley
2001-06-20 17:36 ` Martin Dalecki
2001-06-20 19:27 ` Mike Harrold
2001-06-20 17:46 ` Rob Landley
2001-06-20 19:53 ` Martin Dalecki
2001-06-20 17:53 ` Rob Landley
2001-06-21 7:45 ` Albert D. Cahalan
[not found] ` <mailman.993067219.29993.linux-kernel2news@redhat.com>
2001-06-20 20:16 ` Pete Zaitcev
2001-06-20 22:05 ` Alan Cox
[not found] ` <20010621000725.A24672@werewolf.able.es>
2001-06-20 19:15 ` Rob Landley
2001-06-21 9:40 ` Jonathan Morton
[not found] ` <mailman.993083762.1429.linux-kernel2news@redhat.com>
2001-06-21 3:13 ` Pete Zaitcev
2001-06-21 13:59 ` Rob Landley
2001-06-21 16:48 ` Adam Sampson
2001-06-20 15:12 ` Ben Greear
2001-06-20 15:44 ` Russell Leighton
2001-06-20 16:32 ` Davide Libenzi
2001-06-20 16:54 ` Russell Leighton
2001-06-20 17:03 ` Tony Hoyle
2001-06-20 15:10 ` Rob Landley
2001-06-20 20:23 ` Tony Hoyle
2001-06-21 8:12 ` Henning P. Schmiedehausen
2001-06-20 20:40 ` Richard B. Johnson
2001-06-20 20:48 ` Tony Hoyle
2001-06-20 21:00 ` Daniel Phillips
2001-06-20 21:06 ` Richard B. Johnson
2001-06-20 18:14 ` Henning P. Schmiedehausen
2001-06-20 16:53 ` Larry McVoy
2001-06-20 12:36 ` Rob Landley
2001-06-20 21:14 ` Aaron Lehmann
2001-06-20 18:09 ` Henning P. Schmiedehausen
2001-06-20 19:05 ` William T Wilson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox