I spent a couple of weeks in France.. in Paris, and down in the Dordogne, Bordeux and the like. I found the people there to be almost uniformly friendly, even though in many cases I was left wishing they would stop speaking in english to me.. I was there to practice *their* language..;-)
The culture is different, however, and if the french decide to be rude, they can do it every bit as well as New Yorkers can. The low point of my trip was being chewed out by the lady working the gift shop at the Bordeux train station.. I was surfing the magazines, trying to figure out what to buy and she blew up in my face about spending too much time at it, and kicked me out of the store when I tried to explain and/or pay.
Generally speaking, if you have studied the language and have an interest in working at it, even the Parisians can be quite engaging.
I've been considering trying to find something up in Quebec.. I've taken 15 years of French, grade school through college, but never having spent more than 2 weeks immersed in it, my grasp on it is a whole lot more tentative than I would like.
Any advice on the process for Americans finding work/green card in Quebec? If I was going to go expat, I'd definitely want it to be in a thoroughly french environment.
I'd like to consider myself a strong Linux supporter, and I've been working almost exclusively in Java and Perl for the last 5 years.
I'm getting ready pretty soon to release version 1.0 of my network directory management system for various platform, including Linux. It will be interesting to see how many people shy away from it solely because of it being written in Java. I am completely confident that the work we have done could not have been accomplished with 4 times the resources using any other programming environment that is available today, let alone 5 years ago when we started.
Well, maybe a new dub wouldn't be so bad. I saw Akira in Japanese several times before seeing a dubbed copy, and hearing it dubbed in english made it a lot easier to get the story.
And the story is arcane, but that's the whole point.. just like Mononoke, Akira is an epic, with themes and images that you just wouldn't see in a western movie. Watching Akira is a wonderful experience, and I can't wait to hear that soundtrack in digital surround sound.
I mean, at least they tried. The zero-G fire
was handled well, and aside from a number of
misstatements and silly oversights, everything
seemed like it had been done by someone who
had passed high school, unlike the vast majority
of Hollywood 'science' fiction movies.
What other movie can you think of where the
director actually bothered to demonstrate a gravity differential by having the intrepid
heroes take a piss? The director got his
reaction mass principles basically right,
and best of all, the characters actually
seemed to think in scientific terms. Having
the characters understand that the circumstances they find on Mars are wrong and need serious
explaining, and showing them determined to
find it out through investigative means
is worth a hundred factual errors that might
go over the heads of 95% of the American
audience.
Nonetheless, a selection of my favorite misstatements and science goof-ups, forthwith:
Nematodes are microscopic worms.
I don't believe Pathfinder had a radio capable of
reaching orbit.. that's what those fancy antennae on the lander pod were for.
Solar power tends not to work at night, and even during the day, you need more power than they would have gotten from their rig. See those big petals on said lander pod?
A modem on a space probe? Why? I bet
NASA has never, ever, audio-encoded telemetry return, unless sound was the actual data of
interest.
Nice up-to-the-minute touch, putting an Aerospike engine on the mars transfer craft. Unfortunately, the whole reason an aerospike is valuable is because it is effecient over a range of atmospheric pressures. No atmosphere, no need for an aerospike. Looked cool, though.
I don't believe 'P' is one of the bases
used in DNA (CGAT), but it may be used in RNA.
As I said, though, that's a pretty small list compared to such rancid pieces of science-hating crap as Armaggeddon.
The character development was some what weak, but Carrie Ann Moss did a good job of showing us that she can be a bit more feminine than Trinity, and the shower scene was, as mentioned earlier, pretty much worth the price of admission.
The whole thing felt like a throwback to 1950's science fiction.. some nice morality plays in a setting where the characters have to use science and engineering to solve their problems, and feelings are sublimated under the stress of a high IQ. All of which dooms it to a lousy box office, but I liked it.
Why on earth do colleges keep spitting out marketers? Sun seems to have a passle of particularly annoying ones. Between their idiotic branding and versioning campaign (Java 2 Standard Edition Version, um, 1.3) and this transparent attempt to propagandize the masses ('.. for all those developers who have not *yet* adopted the Java platform), I don't see why Sun imagines these people are worth having around.
Unless they double as janitorial staff after hours, or something.
Seriously, I love Java, you can do a lot of tremendously nifty things with it, but as long as Sun uses Java for proprietary interest, they'll find themselves reaching for the spin knob. As long as you have to fight to convince the world that they want what you have and not just to tell the world what it is that you have, you're swimming against the tide and are doing something fundamentally non-productive.
Just imagine, every time you push either
of the hemispheres to one of the cardinal
points, you get a different musical tone. After
a few weeks of using this thing, you'd know
immediately if you hit the wrong key because
you would get a wrong beep-boop sound.
Yeah, I realized after that I posted that I was probably too glib about tossing terms like 'z-buffer algorithms' around when a generic z-buffer algorithm is just about pixel-by-pixel go/no-go decisions on rendering from a given polygon.
The tile rendering system you describe sounds quite worthwhile, and I have no doubt the DC does something as smart as that. I was mainly objecting to the 'textures both sides of the polygon' bit.
The bit about deferred rendering is just wrong,
at least as the author explained it. All 3d
polygon based systems from the beginning of time
do backface culling. It simply isn't possible to
be in a position to see both sides of a polygon
from a single camera position unless you are
doing ray-tracing type reflections. No system
'textures both sides of the polygons'.
What the author probably meant is that the DC
graphics libraries are smart enough to not do
texturing for polygons which are completely
occluded by other polygons, but that is a
software function, not a hardware function. Z-buffer algorithms have been doing that in
3d graphics systems for years as well.
I suspect the author read about some cool
rendering thing the DC did and didn't understand
it, but felt motivated nonetheless to beat up
on the PS2 about it.
I have to agree about the recommendation for
the Microsoft Press books. I have six Microsoft Press software development books on my bookshelf at work, and each of them individually is among
the best I have on the actual practice of software
development.
I wish I knew the answer to this one. I have been working on an open source directory management project for the last 5 years, and I worked on a freely downloadable prototype for a couple of years before that. In all that time, the ratio of downloads to email sent has been on the order of 100 downloads per each email, leaving me without any idea how many people are actually using what I've been working on. Even when it was very difficult to do with the prototype, I found out years later that people had adopted it but never sent email to me about it.
I think (hope) that if a project is well done
and widely useful, that once it reaches a point of stability and documentation such that people can use it without a great deal of initial investment of effort that the ranks of downloaders will swell and that 1 person in 100 will grow to be significant enough that a few good developers latch on to the idea and come forward with enhancements to the already working system.
In my project, I'm going through quite a lot of effort to make it feasible for others to customize the system for different environments, and I'm going through a lot of effort to try to document everything adequately, but the 1 in 100 factor still seems to hold pretty strongly.
Yes, you're exactly right. Microsoft's entire infatuation with XML has been in response to Java. They are trying to get the industry behind something that could get people away from this
sick (from Microsoft's perspective) obsession with Java.class files and serialized object streams.
In true MS fashion, they've identified and are zeroing in on one of the key weakness of Java: it's not standardized. They're putting the primary.NET components (C# and the common language runtime) in the hands of a standards body.
Yes, except that the most critical need for
standardization (in Java and.NET both) are the
API's, not the language or the JVM. Microsoft
never truly cared about extending the JVM with
new bytecodes or adding syntactical sugar to the
language, they just wanted to dissipate Sun's
ability to define what class libraries software
would be written to.
Microsoft has no intention of standardizing that aspect of.NET any more than
they do of standardizing the Win32 API, and all
talk about the critical importance of standardization to the developer (and the horrid, horrid prospect of all programmer's being forced to use a single language) on the street
is all so much spin to try to cut Sun's legs
out from under them on control of API's.
Which, to be fair, is what Sun is pushing
Java against Microsoft for. But let's not
pretend that there is something magical about
standardization of syntax when the stuff that software
is actually built out of (classes) are not
being standardized.
Is there some reason why the specific instance of use of GPL'ed code is not detailed in your letter? Is it your contention that coming back into compliance with the terms of the GPL for present and further use is not adequate, that some other mechanism must be activated to get back the licensing terms? It would seem that the GPL doesn't attempt to cover
such contingencies.
Sure, RMS' missive on the great Qt relicensing could be taken as arrogant, but I don't believe it is. RMS has worked for 16 years to produce the
foundations of modern free UNIX, and all of that work rests on the foundation of the GNU General Public License. If free software as he has defined it and worked for is going to thrive, the GPL has got to mean what it says. Any erosion or confusion by subtle redefinition or violation of the terms of the GPL put the whole thing at risk, in my opinion. Would folks here have preferred that the FSF sued the KDE developers for the alleged GPL violations?
Richard has always been stubborn and exacting in his quest for a viable free software substrate for computing, this should come as no surprise to anyone. That stubbornness has gotten the job done to an astonishing degree. Whichever desktop you choose, you now have the power and the right to hack on its internals, to make modifications, and to distribute them without paying a dime to anyone, so long as you grant others the same rights. That's a big win for all of us, and it's
an especially big win for the current and prospective KDE community and users. Richard
felt that a point needed to be made on this happy occasion to reinforce the importance and meaning of the GPL, and I see his logic. If we act as
if the GPL 'just sorta' constrains behavior with GPL'ed resources, then we 'just sorta' have the guarantees that the GPL is supposed to convey and promote.
Ah, ick. You will be *much, much happier* if
you run-don't-walk to 1.3.0. I know that early
JDBC had a lot of problems like you describe.
And GC in Java is definitely not suitable for
attempting to prevent non-memory resource leaks..
even the finalizer mechanism won't do it, since
it is not strictly analagous to the C++ destructor
mechanism. If you need to prevent resource loss,
you need to wrap your activities with a try bracket and use finally to clean up.
Most JVM's don't bother doing garbage collection much unless your program bumps up against the maximum heap that your JVM has pre-set. Sun's HotSpot JVM's are supposed to
do garbage collection continuously (or nearly so)
in a background thread, so you can certainly
have some code that grows the heap faster than
the garbage collector can chase it down, at least
for awhile.
There are other kinds of resources that can be
'leaked', though, including native Graphic contexts, file descriptors/sockets, and the like.
What version of the JDK/JVM are you using? Exactly what resources are you leaking?
Find me ten average Java programmers who can point out the synchronized objects and the non-synchronized objects they are instantiating. Threading will get you poor performance when poorly applied. I would rather have the default be that it not be applied, as I don't want to pay for what I don't use.
Well, sure, threading will get you poor performance when poorly applied. But the fact that many classes in the Java library are synchronized won't necessarily give you bad performance. Sun's Java 1.3 VM's can call unconstested synchronized methods with almost no penalty.
The most common thread-synchronized classes that Java programmers most commonly use are the Vector and Hashtable classes, both of which now
have non-synchronized variants in the 1.2 Collections API, for those times when you have higher-level thread synchronization being performed.
Surely, if your 10 average Java programmers are
not savvy enough to know the difference between
synchronized and non-synchronized, though, then it
is probably for the best that the most classes they'll reach for most commonly will be synchronized. That'll keep 'em out of trouble long enough for them to learn the difference.
Ars (may I call you Ars?) is right.. using the
Java APIs makes for a lot of object churn. Anything you do with Strings causes you to create temporary objects, anything you do with Vector or Hashtable can give you thread synchronization penalties on those JVM's that don't have efficient object monitors.
And that's the price you pay for a thread-safe system, absolutely. Strings are immutable to avoid security race conditions. Vectors and Hashtables are synchronized to try and guarantee safety in any possible threading context.
These are all class library issues, but it's fair to call them Java issues, nonetheless. All I can suggest is that safety is one of the most important factors in modern programming, and given that computers are still doubling in speed every eighteen months while they are not getting twice as safe at the same speed, I'd say that Java's tradeoffs for safety (and portability) are worth paying in many cases.
With Ganymede, I can have my server run indefinitely without crashing, despite the fact that the server has over 100,000 lines of code in it that we wrote, and at least twice that much again that Sun wrote. If errors come up, then that thread throws an Exception and everything else keeps going without so much as a hiccup.
For me, that's reliability worth paying for. Sure, C++ doesn't make you pay for features you don't use, but it makes you pay if even one line of code out of your program and its libraries has the slightest blemish.. one null pointer anywhere or one loop that goes one byte too far and the whole house of cards can come tumbling down.
Yes, with modern C++ you can use safer language features that encourages less risky coding and less pointer games, but you still run the risk that any piece of code is capable of corrupting any memory in your program's memory space, at any time. If you need the speed in execution more than the speed of development and debugging, then more power to you, but I'm certainly willing to let the computer pamper me a bit, particularly when my app can have all that safety and still run as very fast as it does.
It's not a solution looking for a problem, it's just not a solution to every problem.
If you're looking to build a GUI app on a single platform, Java isn't going to give you the best results. If you're looking for a server app to do text processing or data reduction, Java isn't going to give you the best results. If you're looking to build a TCP/IP server, Java may make it easy to do, but its lack of a select()-type call or asynchronous i/o means that Java today isn't going to give you nearly the best results.
But, if you're looking to build a portable distributed application with graphics and interactivity beyond the web browser, with lots and lots of classes, many thousands of objects, tons of concurrent threads and a nearly transparent networking layer for distributed object calls, and you want to be able to leverage as much reliable, pre-written classes as possible, Java is just the thing.
And what is your experience with Java, please? I've spent almost the last five years developing a significantly large scale Java app, and it is very very good for what I need from it. You may not have a need for a secure, portable, high level programming environment with decent performance and easy programming, but there are a lot of us who do and have found it in Java.
It would take a moron to decide that Java or anything else is the perfect answer to everything, but to declare people suckers for saying 'hey, Java is really some pretty nice stuff and I get a lot of benefits from programming in it' is insulting and pretty close to zero content.
Well, I dare say we've got a cool Java app,
at least if you have a large, heterogeneous network.. we manage our lab on Ganymede, which is about 200 thousand lines of Java, GPL'ed.
Ganymede features a centralized database server written entirely in Java which contains object data for Users, Groups, Email, Netgroups/NFS, Automounter configuration, IP Networks, Systems/DNS, and more. Administrators in our lab can use the Ganymede GUI client in their web browser (on Windows, Macintosh, OS/2, Solaris, HP-UX, Linux..) to login to the server. The Ganymede server only lets them edit things that belong to them, and many different administrators can be logged into Ganymede simultaneously, each browsing the database and committing changes at the same time. A back end Makefile and Perl code takes the text data files written out by custom plug-in Java code on the server and does an NIS build, a DNS rebuild, an RSH over to our NT PDC to update users and groups on our NT server, a rebuild of the lab's Sendmail aliases, an update of our VPN and Dialup router authentication files, and more.
All Java, distributed, and multi-threaded as heck, with a client that worked the first time we tried it on both Macintosh and OS/2.
I don't know about y'all, but I'm impressed and pleased with Java quite well. If Sun didn't have such tight control over the specification, I'm sure more Java technology would be supported by Microsoft, at least, but I am also sure that you would get less reliability and consistency in running a given piece of code, as everyone would package the class libraries that they like or that is strategic to them, or would provide extensions/distortions to the VM so that floating point math would be done more quickly on their particular processor, or the like. None of which would be helpful for code portability, which is essential for Java to be a credible platform in the first place.
Well, I've spent a half hour or so playing with Nautilus now, and I have to say I'm impressed. There's a lot left to be done with optimizations and bug fixes, but as nullity said, it does just feel right to a surprising extent.
I like the Novice/Intermediate/Hacker menu.. it feels surprisingly intuitive. I'm not used to working with software on Linux in which you look at something and immediately feel a ghostly sense of the perfect metaphor perfectly drawn and shaded hanging on, but I get that sense in several places with Nautilus.. the hacker menu, the way the drag select is rendered, icon stretching, the fact that if you drag an icon to the description panel on the left, you focus on the item you dragged, color and image dropping, and more. Much like with the Macintosh, oddly enough, but with some of the really nice touches of the OS/2 Workplace Shell thrown in. And browsing with Mozilla in Nautilus feels good too (although a progress/loading bar, right-click menus and keyboard page up/page down support wouldn't kill me).
I agree with nullity that Nautilus isn't going to truly 100% come into its own until Bonobo gets moving, but I can imagine living in Nautilus, and that's the first Linux environment I've felt that way about other than the command line.
Congratulations to all involved! Now, when will we get the ability to use the Nautilus shell as the default desktop background, a la gmc?
I spent a couple of weeks in France.. in Paris, and down in the Dordogne, Bordeux and the like. I found the people there to be almost uniformly friendly, even though in many cases I was left wishing they would stop speaking in english to me.. I was there to practice *their* language.. ;-)
The culture is different, however, and if the french decide to be rude, they can do it every bit as well as New Yorkers can. The low point of my trip was being chewed out by the lady working the gift shop at the Bordeux train station.. I was surfing the magazines, trying to figure out what to buy and she blew up in my face about spending too much time at it, and kicked me out of the store when I tried to explain and/or pay.
Generally speaking, if you have studied the language and have an interest in working at it, even the Parisians can be quite engaging.
I've been considering trying to find something up in Quebec.. I've taken 15 years of French, grade school through college, but never having spent more than 2 weeks immersed in it, my grasp on it is a whole lot more tentative than I would like.
Any advice on the process for Americans finding work/green card in Quebec? If I was going to go expat, I'd definitely want it to be in a thoroughly french environment.
I'd like to consider myself a strong Linux supporter, and I've been working almost exclusively in Java and Perl for the last 5 years.
I'm getting ready pretty soon to release version 1.0 of my network directory management system for various platform, including Linux. It will be interesting to see how many people shy away from it solely because of it being written in Java. I am completely confident that the work we have done could not have been accomplished with 4 times the resources using any other programming environment that is available today, let alone 5 years ago when we started.
Well, maybe a new dub wouldn't be so bad. I saw Akira in Japanese several times before seeing a dubbed copy, and hearing it dubbed in english made it a lot easier to get the story.
And the story is arcane, but that's the whole point.. just like Mononoke, Akira is an epic, with themes and images that you just wouldn't see in a western movie. Watching Akira is a wonderful experience, and I can't wait to hear that soundtrack in digital surround sound.
I mean, at least they tried. The zero-G fire was handled well, and aside from a number of misstatements and silly oversights, everything seemed like it had been done by someone who had passed high school, unlike the vast majority of Hollywood 'science' fiction movies.
What other movie can you think of where the director actually bothered to demonstrate a gravity differential by having the intrepid heroes take a piss? The director got his reaction mass principles basically right, and best of all, the characters actually seemed to think in scientific terms. Having the characters understand that the circumstances they find on Mars are wrong and need serious explaining, and showing them determined to find it out through investigative means is worth a hundred factual errors that might go over the heads of 95% of the American audience.
Nonetheless, a selection of my favorite misstatements and science goof-ups, forthwith:
As I said, though, that's a pretty small list compared to such rancid pieces of science-hating crap as Armaggeddon.
The character development was some what weak, but Carrie Ann Moss did a good job of showing us that she can be a bit more feminine than Trinity, and the shower scene was, as mentioned earlier, pretty much worth the price of admission.
The whole thing felt like a throwback to 1950's science fiction.. some nice morality plays in a setting where the characters have to use science and engineering to solve their problems, and feelings are sublimated under the stress of a high IQ. All of which dooms it to a lousy box office, but I liked it.
Why on earth do colleges keep spitting out marketers? Sun seems to have a passle of particularly annoying ones. Between their idiotic branding and versioning campaign (Java 2 Standard Edition Version, um, 1.3) and this transparent attempt to propagandize the masses ('.. for all those developers who have not *yet* adopted the Java platform), I don't see why Sun imagines these people are worth having around.
Unless they double as janitorial staff after hours, or something.
Seriously, I love Java, you can do a lot of tremendously nifty things with it, but as long as Sun uses Java for proprietary interest, they'll find themselves reaching for the spin knob. As long as you have to fight to convince the world that they want what you have and not just to tell the world what it is that you have, you're swimming against the tide and are doing something fundamentally non-productive.
Just imagine, every time you push either of the hemispheres to one of the cardinal points, you get a different musical tone. After a few weeks of using this thing, you'd know immediately if you hit the wrong key because you would get a wrong beep-boop sound.
I like it.
Yeah, I realized after that I posted that I was probably too glib about tossing terms like 'z-buffer algorithms' around when a generic z-buffer algorithm is just about pixel-by-pixel go/no-go decisions on rendering from a given polygon.
The tile rendering system you describe sounds quite worthwhile, and I have no doubt the DC does something as smart as that. I was mainly objecting to the 'textures both sides of the polygon' bit.
The bit about deferred rendering is just wrong, at least as the author explained it. All 3d polygon based systems from the beginning of time do backface culling. It simply isn't possible to be in a position to see both sides of a polygon from a single camera position unless you are doing ray-tracing type reflections. No system 'textures both sides of the polygons'.
What the author probably meant is that the DC graphics libraries are smart enough to not do texturing for polygons which are completely occluded by other polygons, but that is a software function, not a hardware function. Z-buffer algorithms have been doing that in 3d graphics systems for years as well.
I suspect the author read about some cool rendering thing the DC did and didn't understand it, but felt motivated nonetheless to beat up on the PS2 about it.
I have to agree about the recommendation for the Microsoft Press books. I have six Microsoft Press software development books on my bookshelf at work, and each of them individually is among the best I have on the actual practice of software development.
Begging your email list for feedback doesn't work, I tried that.
;-)
I wish I knew the answer to this one. I have been working on an open source directory management project for the last 5 years, and I worked on a freely downloadable prototype for a couple of years before that. In all that time, the ratio of downloads to email sent has been on the order of 100 downloads per each email, leaving me without any idea how many people are actually using what I've been working on. Even when it was very difficult to do with the prototype, I found out years later that people had adopted it but never sent email to me about it.
I think (hope) that if a project is well done and widely useful, that once it reaches a point of stability and documentation such that people can use it without a great deal of initial investment of effort that the ranks of downloaders will swell and that 1 person in 100 will grow to be significant enough that a few good developers latch on to the idea and come forward with enhancements to the already working system.
In my project, I'm going through quite a lot of effort to make it feasible for others to customize the system for different environments, and I'm going through a lot of effort to try to document everything adequately, but the 1 in 100 factor still seems to hold pretty strongly.
True enough. Heck, Microsoft brought us D0S, how could anyone possibly ever threaten such a l337 company?
Yes, you're exactly right. Microsoft's entire infatuation with XML has been in response to Java. They are trying to get the industry behind something that could get people away from this sick (from Microsoft's perspective) obsession with Java .class files and serialized object streams.
Yes, except that the most critical need for standardization (in Java and .NET both) are the
API's, not the language or the JVM. Microsoft
never truly cared about extending the JVM with
new bytecodes or adding syntactical sugar to the
language, they just wanted to dissipate Sun's
ability to define what class libraries software
would be written to.
Microsoft has no intention of standardizing that aspect of .NET any more than
they do of standardizing the Win32 API, and all
talk about the critical importance of standardization to the developer (and the horrid, horrid prospect of all programmer's being forced to use a single language) on the street
is all so much spin to try to cut Sun's legs
out from under them on control of API's.
Which, to be fair, is what Sun is pushing Java against Microsoft for. But let's not pretend that there is something magical about standardization of syntax when the stuff that software is actually built out of (classes) are not being standardized.
Ah, oops. Mea culpa, then.
Is there some reason why the specific instance of use of GPL'ed code is not detailed in your letter? Is it your contention that coming back into compliance with the terms of the GPL for present and further use is not adequate, that some other mechanism must be activated to get back the licensing terms? It would seem that the GPL doesn't attempt to cover such contingencies.
Despite the masterful first sentence, the 'Hope this helps' tag line marks this post as the work of a troll who got himself a fancy account name.
Since RMS has never been known to participate in Slashdot flamefests, I'm extremely skeptical that this is genuine.
Sure, RMS' missive on the great Qt relicensing could be taken as arrogant, but I don't believe it is. RMS has worked for 16 years to produce the foundations of modern free UNIX, and all of that work rests on the foundation of the GNU General Public License. If free software as he has defined it and worked for is going to thrive, the GPL has got to mean what it says. Any erosion or confusion by subtle redefinition or violation of the terms of the GPL put the whole thing at risk, in my opinion. Would folks here have preferred that the FSF sued the KDE developers for the alleged GPL violations?
Richard has always been stubborn and exacting in his quest for a viable free software substrate for computing, this should come as no surprise to anyone. That stubbornness has gotten the job done to an astonishing degree. Whichever desktop you choose, you now have the power and the right to hack on its internals, to make modifications, and to distribute them without paying a dime to anyone, so long as you grant others the same rights. That's a big win for all of us, and it's an especially big win for the current and prospective KDE community and users. Richard felt that a point needed to be made on this happy occasion to reinforce the importance and meaning of the GPL, and I see his logic. If we act as if the GPL 'just sorta' constrains behavior with GPL'ed resources, then we 'just sorta' have the guarantees that the GPL is supposed to convey and promote.
Ah, ick. You will be *much, much happier* if you run-don't-walk to 1.3.0. I know that early JDBC had a lot of problems like you describe.
And GC in Java is definitely not suitable for attempting to prevent non-memory resource leaks.. even the finalizer mechanism won't do it, since it is not strictly analagous to the C++ destructor mechanism. If you need to prevent resource loss, you need to wrap your activities with a try bracket and use finally to clean up.
Most JVM's don't bother doing garbage collection much unless your program bumps up against the maximum heap that your JVM has pre-set. Sun's HotSpot JVM's are supposed to do garbage collection continuously (or nearly so) in a background thread, so you can certainly have some code that grows the heap faster than the garbage collector can chase it down, at least for awhile.
There are other kinds of resources that can be 'leaked', though, including native Graphic contexts, file descriptors/sockets, and the like.
What version of the JDK/JVM are you using? Exactly what resources are you leaking?
Well, sure, threading will get you poor performance when poorly applied. But the fact that many classes in the Java library are synchronized won't necessarily give you bad performance. Sun's Java 1.3 VM's can call unconstested synchronized methods with almost no penalty.
The most common thread-synchronized classes that Java programmers most commonly use are the Vector and Hashtable classes, both of which now have non-synchronized variants in the 1.2 Collections API, for those times when you have higher-level thread synchronization being performed.
Surely, if your 10 average Java programmers are not savvy enough to know the difference between synchronized and non-synchronized, though, then it is probably for the best that the most classes they'll reach for most commonly will be synchronized. That'll keep 'em out of trouble long enough for them to learn the difference.
Ars (may I call you Ars?) is right.. using the Java APIs makes for a lot of object churn. Anything you do with Strings causes you to create temporary objects, anything you do with Vector or Hashtable can give you thread synchronization penalties on those JVM's that don't have efficient object monitors.
And that's the price you pay for a thread-safe system, absolutely. Strings are immutable to avoid security race conditions. Vectors and Hashtables are synchronized to try and guarantee safety in any possible threading context.
These are all class library issues, but it's fair to call them Java issues, nonetheless. All I can suggest is that safety is one of the most important factors in modern programming, and given that computers are still doubling in speed every eighteen months while they are not getting twice as safe at the same speed, I'd say that Java's tradeoffs for safety (and portability) are worth paying in many cases.
With Ganymede, I can have my server run indefinitely without crashing, despite the fact that the server has over 100,000 lines of code in it that we wrote, and at least twice that much again that Sun wrote. If errors come up, then that thread throws an Exception and everything else keeps going without so much as a hiccup.
For me, that's reliability worth paying for. Sure, C++ doesn't make you pay for features you don't use, but it makes you pay if even one line of code out of your program and its libraries has the slightest blemish.. one null pointer anywhere or one loop that goes one byte too far and the whole house of cards can come tumbling down.
Yes, with modern C++ you can use safer language features that encourages less risky coding and less pointer games, but you still run the risk that any piece of code is capable of corrupting any memory in your program's memory space, at any time. If you need the speed in execution more than the speed of development and debugging, then more power to you, but I'm certainly willing to let the computer pamper me a bit, particularly when my app can have all that safety and still run as very fast as it does.
--jon
It's not a solution looking for a problem, it's just not a solution to every problem.
If you're looking to build a GUI app on a single platform, Java isn't going to give you the best results. If you're looking for a server app to do text processing or data reduction, Java isn't going to give you the best results. If you're looking to build a TCP/IP server, Java may make it easy to do, but its lack of a select()-type call or asynchronous i/o means that Java today isn't going to give you nearly the best results.
But, if you're looking to build a portable distributed application with graphics and interactivity beyond the web browser, with lots and lots of classes, many thousands of objects, tons of concurrent threads and a nearly transparent networking layer for distributed object calls, and you want to be able to leverage as much reliable, pre-written classes as possible, Java is just the thing.
And what is your experience with Java, please? I've spent almost the last five years developing a significantly large scale Java app, and it is very very good for what I need from it. You may not have a need for a secure, portable, high level programming environment with decent performance and easy programming, but there are a lot of us who do and have found it in Java.
It would take a moron to decide that Java or anything else is the perfect answer to everything, but to declare people suckers for saying 'hey, Java is really some pretty nice stuff and I get a lot of benefits from programming in it' is insulting and pretty close to zero content.
Well, I dare say we've got a cool Java app, at least if you have a large, heterogeneous network.. we manage our lab on Ganymede, which is about 200 thousand lines of Java, GPL'ed.
Ganymede features a centralized database server written entirely in Java which contains object data for Users, Groups, Email, Netgroups/NFS, Automounter configuration, IP Networks, Systems/DNS, and more. Administrators in our lab can use the Ganymede GUI client in their web browser (on Windows, Macintosh, OS/2, Solaris, HP-UX, Linux..) to login to the server. The Ganymede server only lets them edit things that belong to them, and many different administrators can be logged into Ganymede simultaneously, each browsing the database and committing changes at the same time. A back end Makefile and Perl code takes the text data files written out by custom plug-in Java code on the server and does an NIS build, a DNS rebuild, an RSH over to our NT PDC to update users and groups on our NT server, a rebuild of the lab's Sendmail aliases, an update of our VPN and Dialup router authentication files, and more.
All Java, distributed, and multi-threaded as heck, with a client that worked the first time we tried it on both Macintosh and OS/2.
I don't know about y'all, but I'm impressed and pleased with Java quite well. If Sun didn't have such tight control over the specification, I'm sure more Java technology would be supported by Microsoft, at least, but I am also sure that you would get less reliability and consistency in running a given piece of code, as everyone would package the class libraries that they like or that is strategic to them, or would provide extensions/distortions to the VM so that floating point math would be done more quickly on their particular processor, or the like. None of which would be helpful for code portability, which is essential for Java to be a credible platform in the first place.
Well, I've spent a half hour or so playing with Nautilus now, and I have to say I'm impressed. There's a lot left to be done with optimizations and bug fixes, but as nullity said, it does just feel right to a surprising extent.
I like the Novice/Intermediate/Hacker menu.. it feels surprisingly intuitive. I'm not used to working with software on Linux in which you look at something and immediately feel a ghostly sense of the perfect metaphor perfectly drawn and shaded hanging on, but I get that sense in several places with Nautilus.. the hacker menu, the way the drag select is rendered, icon stretching, the fact that if you drag an icon to the description panel on the left, you focus on the item you dragged, color and image dropping, and more. Much like with the Macintosh, oddly enough, but with some of the really nice touches of the OS/2 Workplace Shell thrown in. And browsing with Mozilla in Nautilus feels good too (although a progress/loading bar, right-click menus and keyboard page up/page down support wouldn't kill me).
I agree with nullity that Nautilus isn't going to truly 100% come into its own until Bonobo gets moving, but I can imagine living in Nautilus, and that's the first Linux environment I've felt that way about other than the command line.
Congratulations to all involved! Now, when will we get the ability to use the Nautilus shell as the default desktop background, a la gmc?