Industry Leaders Discuss Java Status Quo
prostoalex writes "JavaPro magazine published a wrap-up report on Java discussions at the recent JavaOne. If you missed JavaOne, the video Webcasts of McNealy, Schwartz, Gosling et al. are available from this site. The round table mentioned above gathered people from Sun, Oracle, Borland, Novell, Motorola and others. The discussion topics included: Java vs. NET, integration issues, the impact of open source and top problems that Java is facing today."
Java Script, Java Beans, Java Swing, Java Status Quo!? Enough!
I think it would benefit the Open Source developer community if the minutes of the conference were made public. That would enhance the understanding that the hundreds of millions of Java developers throughout the world have of Java.
We need to be more agressive in building the respect and visibility of Java in the corporation. Only by doing so can we establish the necessary paradigm to determine the direction that the IT world, nay, the society in general has to take.
It makes me mad when I look across the look and see the cookie-cutter drones that spout Windows drivel without questioning their origins and more importantly their destinies.
Why must we live such a drab and empty existence? Why can't we challenge authority figures and build a better tomorrow. Not by force, mind you, but by knowledge. It is the only way to world peace.
So in summary, if you don't support Java, you're against world peace.
Wearing pants should always be optional.
import music.blues.12bars;
public void static main(){
and.I.Like(It).I.Like(It).I.Like(It).I.Like(It);
Here(We).go(o);
Rocking.all.over.the.(World);
}
I'm a full time VB programmer who is looking to move away from microsoft tools as well as microsoft platforms.
I started out not knowing anything but ms products- learned VB in school and landed my first job writing database apps. As I learned more, and my employer's needs grew- we started realizing that MS was too expensive and we looked for alternatives.
Now we use linux and open source tools. I am learning to handle a system and use software that has been built by the open source community. I've even tweaked some code here and there for our own purposes.
While all this has been going on- I've been trying to look to the future and work on some projects of my own. I really wanted to learn a language that would be portable, and have good tools I could afford. I've finally opted to go with Java.
Java seems the simplest way to be able to work cross platform and have access to sufficient resources without having to shell out big bucks. In fact my development platform right now is a RedHat box with eclipse and Sun's JDK. I'm about 2 months into what I hope will be a long relationship. I think the article is right in that what is good for Linux is also very good for Java.
It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
I'm not saying that everybody needs to stop contributing their pet projects to the communal good, but maybe the deal doesn't need to be made sweeter for these scummy companies that are building cheap foreign and selling expensive domestic. I'm starting to think that (L)GPLv3 should involve a clause invokable by the author of a project so covered that it not be used in any commercial application whether source is included or not.
The biggest irony is when movie companies using Free Software turn around and lobby our government to harm users of Free Software. This free ride shit has got to stop, there.
Try not. Do or do not, there is no try.
-- Dr. Spock, stardate 2822-3.
Monoculture produces great minds, like yours!
You - and Mr. Gates - are quite welcome to whaterver is left, after the pursuit of your brilliant agenda.
"Flyin' in just a sweet place,
Never been known to fail..."
Java isn't slow; Java is a language. Since when could languages be slow? It is Java vs C# and JVM vs .NET. But even that isn't a good comparison.
Sun JRE is slow. The JVM runs as another layer on top of the OS, so of course it will be slower than if it were native to the OS. All Sun has to do is make a JM (Java Machine) chip that can be put into motherboards to do the processing at the hardware level, not hardware-os-software level. Then M$ will have a problem competing.
I've not seen anyone take this tack with respect to OSS before. Care to back up your assertions? I'd like to hear at least anecdotal evidence from CIOs who are realizing this situation and capitalizing on the wealth of free software out there by saving local headcount and getting things done remotely.
Or is this just an opinion?
Does anyone else find it a little disconcerting that, "according to a recent Evans Data Corporation survey, developers who are migrating now from Visual Basic are moving to Java and C# in roughly equal numbers." What good is a few years head start and breathless hyperbole from the entire technology industry when Microsoft can simply create a new competitive product and quickly catch up? Java may well continue to be quite successful even though it has under-delivered, but that could mean little with C#, .NET, and whatever else comes out of Redmond. Does Java have enough momentum to thrive?
This is not a troll.
Why does anyone use Java, ever? In what situation does it offer anything that justifies the pain and inconvience that it incurs?
Can you think of even one Java application that you use on your desktop and like?
Can you think of a single language/runtime that feels so out of place no matter what platform you're running on? A platform that makes you deal with CLASSPATH, non-native and slow widgets, and shell scripts to set a thousand environment variables before starting your "portable" application?
Can you think of a single problem domain where Java offers greater portability than the competition? Standard C, C++ or Python (depending on your desired level of abstraction) are just as portable as Java as long as your libraries/toolkits are cross-platform. And programs written in these languages just fit in, they find their libraries without fuss, they start up rapidly (in comparison) instead of seemingly spawning an OS within an OS.
I've felt this way about Java since the moment I first tried it, and I'm still at a loss. I just don't get why so many people decide that Java is the solution for them.
I find it interesting that the published report is via ASP...
What I'm getting at is that a little goes a long way with display updates. Having a 'silken mouse' under Windows NT+ meant that even under heavy load the interface felt smooth and responsive (well, until you tried to open a window or do something requiring CPU) -- with Win9X/ME the mouse would jerk around under even mediocre load. X-Windows also felt like it was sluggish until I discovered you could 'nice -n -10' it. On the AS/400, heavy priority is given to interactive applications but batch jobs (which only run in the background) and compiles are typically executed at a lower priority.
My point is that they need to optimize the speed with which displays and user interface updates are performed to achieve the effect where the user feels like the application is crisp -- even if it impacts performance in other areas. It's a subtle user interface trick that they've missed out on, although I'll admit that Java 2 is making things a little better.
Try not. Do or do not, there is no try.
-- Dr. Spock, stardate 2822-3.
Maybe Iâ(TM)m ignorant, but I donâ(TM)t think there is an IDE for java that comes close to Visual Studio. While VS.NET might have its problems, it is integrated very tight. As a developer I donâ(TM)t want my time taken up with simple tasks, Iâ(TM)d rather work on the interesting bits.
At the risk of publishing a 'me too', I agree with the above post. Java is slow if you write a slow program that doesn't respect the platform and language's unique features and quirks, just like any other language (consider the uneven implementations of STL in C++).
Many programs do use Swing and do it with acceptable performance; JBuilder is one example that comes to mind. Writing a responsive Swing app is possible, it just requires knowledge of the UI toolkit and how to appropriately use it... you can write crap code in QT as well. Eclipse is also written in Java; if the backend was written poorly, it wouldn't matter how fast SWT was, but as it stands the user experience is generally quite good.
I would also like to 'me too' the parent's comment about Sun's JVM. The recent changes in JDK1.4 (concurrent garbage collection, etc.) should help somewhat, but JRockit and Jikes show it is possible to write faster JVMs. Sun just hasn't done it yet.
Sun seems good at the theory, but crappy at implementations. The first time I tried NetBeans (a Swing-based app) it was horribly unresponsive and the second time, it had a terrible look and feel... they relied too heavily on JavaBeans and generic layout heuristics so that every dialog was not appropriately laid out or sized.
Anyway my $.02.
======
In X-Windows the client serves YOU!
It would be very helpful if there was an analog to VB.NET for Java. Java is a language and a bytecode/runtime standard. I don't see why Sun hasn't worked hard to make the Java platform support other languages like Basic, Python and others. They really should have taken Jython to a new level: a Python compiler that generates Java bytecodes from Python source code. Or it could be Ruby for all I care. I just find Python to be an easier language to do stuff quickly in.
.NET. Not that I really see much of a difference, it's sort of like being asked to root for either the Soviet Union or NAZI Germany during the Battle of Stalingrad. Sun's only more OSS friendly than Microsoft because they want a big stick to beat MS with. If Sun had no competition, they'd be the same tyrants that Microsoft are.
.NET and J2EE I think Mono is safe because Microsoft is in a damned if you, damned if you don't situation. If they go after Mono, they reduce their claim that .NET is open and cross platform to steaming pile of rubble a la the WTC. If they don't, they have a potentially serious competitor that makes much of Windows' advantages disappear. Microsoft has to play catch up with Sun here and they're SOL if they don't let Mono grow. By the time Mono is truly mature, Microsoft will probably be a shadow of their former selves. Germany is already moving away from buying their products and the USDoD is quietly opening up to OSS. If Microsoft loses the USDoD then it's over for them in the US Government because the USDoD accounts for the majority of the federal work force
Java is too hard for many people to understand, something like Python or BASIC as an alternative language that targets the same runtime would help them fend off
I will say that in regard to
Click here or a puppy gets stomped!
Java isn't slow; Java is a language.
.NET addresses this by letting you pre-compile CLR code into binaries; that doesn't make the code run faster, but it makes programs start up faster.
No, Java is a platform with multiple implementations of the compiler/JIT and (effectively) a single implementation of the libraries.
Java compilers/JITs achieve very good performance, having little overhead compared to analogous C code.
But the Java platform falls short in several areas.
First, the VM has an enormous memory footprint, and it starts up very slowly. VM sharing is supposed to address this, but it hasn't materialized.
Second, Java's native code interface (JNI) is inefficient and Java cannot efficiently access native data structures. That makes it difficult to reuse existing, mature C/C++ libraries, and to interface efficiently with operating system facilities.
Third, Java's libraries are not designed for speed: their APIs impose a lot of overhead, and the actual implementations aren't very good either. Also, Java's libraries are designed for generality first, and speed and high-quality cross-platform support distant seconds (things like Java2D just don't run very well on all platforms).
Sun JRE is slow. The JVM runs as another layer on top of the OS, so of course it will be slower than if it were native to the OS. All Sun has to do is make a JM (Java Machine) chip that can be put into motherboards to do the processing at the hardware level, not hardware-os-software level.
Raw CPU performance is not the issue. Java code runs very fast in Sun's current implementation. A Java native chip would not help at all (and would be impossible to make succeed in the marketplace anyway). The problems with Sun Java performance are platform design problems. In a sense, Sun's focus on CPU performance has distracted them from addressing the real performance problems.
javachip was prototyped, but never marketed - yet another execution failure at Sun. At on point, Sun declared "Java implemented right was not slow". It then hired coders to implement a "Java compiler in Java". Result ? The Java compiler in Java was 20 TIMES SLOWER than the Java compiler written in C! These were never widely published, but just do a search on Technical Abstracts on sun.com, you'll find them.
I see a lot of the usual anti-Java posts on here. "It's slow", "The screen flickers", "The widgets suck."
Just like any other technology, implementation is more key to the quality than the technology itself. I have seen some REALLY bad Java client side applications, but then there are some that are awesome. The GUI installer for Oracle is Java Swing. It looks identical on every OS you install it on (aside from options that may or may not be available to install on a given platform), and it works really well. Another example is Veritas' VMSA software. It is Java Swing, allows you to run it on multiple platforms, and you use it to manage your Veritas volumes on multiple hosts, networks etc. If an organization spends a $100k+ on a storage system, you can bet your ass that they would be mighty pissed if they had some "slow shitty client software" messing things up.
And don't even dis Java on the server side either. Java on the server side does not have to be slow like everyone thinks. One example is the application server Orion. You want to have some fun, go to http://www.orionserver.com, download it, and install it. Then do some apache bench comparisons between it and even a tuned Apache and Orion will serve static HTML pages faster. For even more fun, whip up a JSP with a database call to Postgres or Oracle, and bench that against Apache still serving static content. Orion will actually serve dynamic DB-generated content as fast or faster than Apache can handle static HTML.
I guess the point I am trying to make is don't just make blanket statements and put down a technology because of a bad experience. It is all about the implementation. Best technology with a shitty implementation will suck no matter what.
--Jon
You just need to do a good bit of planning before implementation.
Windows: MFC front end, C++ back end
Linux: gtk front end, same C++ back end
OS X: obj c front end, same C++ back end
It's more work but every platform has nuances that users like. Unless it's a true native app your users will generally not like it. As my boss says "Make it pretty first, that's what sells. Make it work next." Unbelieveable but true.
I have developed lots of significant things in Java, but have repeatedly been confronted with bad / stupid limitations of the environment and implementations. Even expending considerable resources and being a full Java licensee, it has never been possible to get simple issues resolved within a reasonable time frame. Occasionally I see something being addressed 5 years or more after the corresponding project gave up on Java because of the lack of a reasonable response. Other issues are never addressed. As such, I do not trust the Java base to deliver the necessary tools, fixes, etc. I see release after release that fixes some things and breaks a number of others and there is no real recourse.
Swing is far worse for many applications than some of the toolkits it displaced. There need to be some larger set of viable competing UI toolkits, not just relying on Sun because they control the environment.
Another big problem is lack of a more efficient incremental class loader. I gave a presentation at Sun many years ago explaining how this could revolutionize web applications. I helped create prototypes that never made you wait and incrementally downloaded as needed, but there was never the ability to integrate the solution into the environment as would be possible in a GPL environment. As a result, you have the dilema that on the one hand, you would like to only load what a particular user will execute, but on the other hand, loading it class by class using the default class loader and http is completely unacceptable for complex applications, so you wind up with a jar file, and you may as well have had an executable file, as far as modular download goes. This is part of what makes it, for example, prohibitive to use your own UI library instead of Swing, because it cannot be incrementally downloaded.
Sun wants to control things, but does not innovate nearly as quickly as an open community would solving their own real-world problems.
If Sun would GPL Java, I would come back to it in a major way. But often the sorts of things I might add are the same sorts of things Sun protested when Microsoft tried, such as tight XPCOM support in Mozilla so that it has equal browser integration to Javascript, Python, etc. Sun clearly wants to suppress this sort of thing.
As such, what can be done with Java is largely limited to Sun's imagination, rather than that of the community. JCP does not seem realisticly useful or credible. Perhaps it is for some, but not for me and many I know of, for whom that perception is everything. I could go on and discuss a thousand issues. The wait time for required innovations is just too long from Sun.
I know I have been out of Java for some time. If this is suddenly different now, then I hope to hear about it. Any GPL effort started now from scratch should define a new open standard unless Sun is willing to work with a standards body to standardize its offering, IMO.
Two Points:
1. I believe Java is great for applications that do not have a fat client GUI. "Server-Side" components, and web applications, etc. seem to perform just fine.
2. Java is used the most by in house development teams. Many times in this evironment, the advantages of developing in Java outway the speed problem experienced by the users of a FAT GUI.
As a side note, I use IDEA for Java development, which is an IDE written in Java. The UI seems very responsive on my 1ghz linux laptop. Not sure what they do different than everyone else.
-Pete
Soccer Goal Plans
Turns out that Java 1.5 will have these features and more - one thing I am really looking forward to is generics.
The final advantage of C# over Java was that a C# program looked like it belongs on Windows - same widget set, same "feel". This is a bigger deal than most people realize. Windows users grow accustomed to doing things a certain way, and they don't like it when you try to impose something different on them. Swing just doesn't cut it in this regard.
Java is slow if you write a slow program that doesn't respect the platform and language's unique features and quirks, just like any other language (consider the uneven implementations of STL in C++).
.NET's VM, but suspect that they excluded many of the going-forward limitations of java.
See the issue is not really with the JVM, but with the tradeoffs of the language. While it's possible to write somewhat snappy engines like jrocket, or integrate OS features like the windows version, there are certain fundamental issues which can not be handled transparently.
Firstly, hands-off memory management. It's difficult to heuristically discover deterministic memory patterns which would allow inner-loop optimizations. (I'm not even aware of anyone even trying this). The lack of explicit deletions/frees (even if only advisory) is bad in my opinion. It has fostered enormously wasteful memory utilization in enterprise level applications. And when your building blocks aren't efficient, how can you hope to build efficient apps. I use the java-based idea editor, and scrolling or doing a screen refresh requires one or more garbage collections, and I've already given the VM most of the memory on my system.
To a lesser role, the default virtualization of methods is a slow-down. To some degree a JIT can heuristically generate deterministic call-trees to remove the virtualization (e.x. if no subclasses are used/found), but this can be really nasty in the general case. This is much worsened when interfaces are used (method/variable lookups are non-constant in time, to say nothing of the overhead). And lastly, there is a growing trend in using reflection for general processing. This just about throws all optimizations out the window.
While I definately see the value in multiple inheritance (or at least java's interface version), and a language definately needs to dynamically map itself somehow, Sun's particular decisions do not lend themselves to high performance inner-loops; even if hardware accelerated.
Thus the only way to write performant / memory-safe programs is to make all your inner-loops use static/final, and to re-invent the standard libraries where-needed. And this is to say nothing of the libraries that can not be reverse-engineered (GUI, OS-interacting, etc). Though theoretically you could write material using jni, what's the point?
If you need jni to make something usable (in the common case), then the language isn't practical.. jni is for porting or special cases.
See, I agree with you basic point which is that java is a language, and this has little to do with the mapping to the machine-code. Ideally, java can be treated just like c, and written directly to assembly (gjc). However, due to the points above, even gjc has to use wrapper functions for these java-specific idioms, and thus the inner loops are no faster than in a nicely optimized jit.
And as I said above, none of this matters, if the APIs of the language encourage practices which do not scale. SUN learned this about their GUI in 1.0, and I'm seeing more and more performance friendly topics arising. However, much core can't be changed.
I am not completely familiar with
I think java is a wonderful language to program in, but all too often, modern software requires a scale that java just can't seem to comfortably live in. And thus I have my doubts about it's future.
-Michael
then, to justify...
Can you think of even one Java application that you use on your desktop and like?
You're assuming that desktop applications is the only applications being developed. You are incorrect.
Java is a powerful server side development language. Ever heard of J2EE? This is an entire framework, complete with a component protocol, called JavaBeans. Other protocols provided or supported by J2EE allow the J2EE server components ( called containers ) to provide services to the web applications it runs. Or maybe you're heard of JSP, aka Java Server Pages? Which is much like PHP on steriods. An HTML embedded scripting language
J2EE standard has been honored reasonabley well in the industry, with much of the J2EE components built easily moved from one application server to the other.
Based on upvotes, Ageism is the only "-ism" Slashdotters care about and think isn't SJW
Java is for elite-programmer. Is that a niche market?
The problem is that while it's easy to make a user interface, it's a lot harder to make one well. I guess you could say that Swing is the victim of its own success.
(sun won its suit against microsoft that it was unfairly squeezing out the java vm - then promptly sued microsoft for posting the microsoft jvm on windowsupdate.com because the license from sun didn't explicitly allow that. they won the suit and for some time windows users just couldn't get their hands on a vm. and if that doesn't decimate any gains from using java, i don't know what does)
What are you talking about? Windows users have always been able to get their hands on a JVM, just not the Microsoft one because of the lawsuit. Nothing stopping users from downloading one of the many other implementations of the JVM on Windows.
I wear pants.
I mean, if you're using
Java isn't a perfect language, but at least it supports linux, mac, solaris, atari, commodore, ti-99, etc.
--- Little Atomo - The Amazing Thinking Robot from Atomocom! http://www.youtube.com/watch?v=GIP9KisHi4k
proof, n. A demonstration that a conclusion is implied by certain premises and axioms.
Please stop perpetuating the american companies are evil FUD. Most american companies actually care about their customers. Yes, they want to make money but every company needs to to survive. Thats just how the economy works. Most american companies are fairly ethical due to the critical public. You should criticize but don't make pointless generalizations like this. Its really unproductive.
Besides, its not like companies in other countries don't use the same scummy tactics as american companies. But apparently youre too blind to see this. Go get yourself a dose of reality: go try doing business in a third world country. You'll quickly find out that ethics quickly goes out the window due to even less accountability. The little guy gets *royally* screwed by the local warlord/ corrupt politican/dictator.
Very good points, and I'm a diehard java fan. I was thinking the same thing when I read this article. LIttle quick on the troll bomb there, mods.
Hey, I'm just your average shit and piss factory.
Here's the link again for those who are curious:n dtable/
http://www.ftponline.com/reports/javaone/2003/rou
1. I have heard that Gosling says he works so much on forward-thinking projects at Sun that he'd prefer others to comment on the real-world use of Java today in industry.
2. As for why IBM developers weren't there, all I can say is that they were invited (as they were last year, when they participated in the roundtable discussion). However, they refused to come, and indeed boycotted JavaOne entirely.
The person who began this thread should've read further down the first page of the article: "Moderator Simon Phipps began by welcoming some new faces at the table and arching his eyebrows in surprise at the one big no-show this year: IBM's apparent boycott of JavaOne. Despite IBM's absence, they were not ignored in the ensuing conversation."
Later during the Java Technology Achievement Awards, cosponsored by Sun and Java Pro magazine, Mark Bauhaus, vice-president of Java Web services at Sun, commented on IBM's no-show at this year's JavaOne, despite their wins at the event. Although this line didn't make it in the final report online, I heard him say, "All of the other J2EE players are here with enthusiasm: BEA, Oracle, Borland, you name it. It is too bad that one of our important partners evidently chose not to participate."
The report on that event is here:r ds/
http://www.ftponline.com/reports/javaone/2003/awa