On the Horizon: an Apache-License Version of Java
mparaz writes "Geir Magnusson of the Apache Software Foundation announced a J2SE 5 implementation project called 'Harmony.' It covers the virtual machine and the class libraries, and aims to pass the Sun specification.
A FAQ is available."
Could this be an essential aid to Tomcat and the increasing number of projects the apache foundation are managing within the Java space, such as ANT. This can only be a good thing
Business Voyeur
Cool! This will be useful for the majority of Linux desktops, because it means it could be installed as part of a default install, rather than having to download it and install it afterwards (==hell for lots of users).
For those too lazy to click through to that blog entry, Kaffe, Classpath and other solutions already exist, and this is not the first.... although coming from Apache carries some weight.
Simpy
http://people.apache.org/~geirm/harmony.jpg
I remember a project called Harmony that had the purpose of being an API-compatible clone of QT but without the license issues: www.kde.org/whatiskde/qt.php. It never got off the ground though.
see a Text Widget
Seems that Harmony will be licenced under Apache License v2.0 so it will not be GPL compatible. So once again Java will not be usable in the free world. Sad to hear.
"...and aims to pass the Sun specification"
Admittedly, I didn't RTFA. But this sounds like they are going to add features that are not available from Sun's JVM. Microsoft did the same thing. Java is suppose to be compile-once-run-anywhere. I remember the headaches caused by MS-JVM and it's deviations from the Sun spec. Ultimately, MS got the gavel on the wrist for it.
Apache Software License, version 2.0
This is a free software license but it is incompatible with the GPL. The Apache Software License is incompatible with the GPL because it has a specific requirement that is not in the GPL: it has certain patent termination cases that the GPL does not require. (We don't think those patent termination cases are inherently a bad idea, but nonetheless they are incompatible with the GNU GPL.)
Combination - fun iPhone puzzling
Yet Another Fucking Java Implementation!
The great beauty of the linux desktop is that it, like all *x desktop windowing systems, is not standardised - and therefore, you don't have to use a bloated implementation. Personally, I use openbox, which as about as far from bloated as you can get (assuming you something a little more sophisticated than twm..).
Also, the point of the sun specification for Java is (in part) to ensure that the JVM performs consistently across platforms.
$ strings FTP.EXE | grep Copyright
@(#) Copyright (c) 1983 The Regents of the University of California.
doesn't look so much like reinventing the wheel, as you can read in TFA contributers of Kaffe, GCJ and Classpath are interested in participation
And after it passes the Sun spec, we can fix it to be useful (since we have the source) with a simple header change:
..that should eliminate half of the code, decreasing binary size and actually performing. ;)
#define sleep(a) while(0)
Do daemons dream of electric sleep()?
If these dudes are genuinely interested, then this could be one of the best projects of all time. Most of them are very well known in the free software community. The question is - will they use Classpath or try to build their own? The class libraries are 100 times more difficult to write than the VM. That's why most Java projects use Classpath - they all tried re-inventing the wheel themselves and just gave up in frustration.
:
:
:
:
:
These individuals have expressed an interest in participating in the
architecture and design work. The information in parenthesis indicates
other community participation or relevant experiences of that individual
Guy Churchward (individual w/ commercial VM experience)
Joakim Dahlstedt (individual w/ commercial VM experience)
Jeroen Frijters (IKVM)
Geir Magnusson Jr. (Apache)
Ricardo Morin (individual w/ commercial VM experience)
Georges Saab (individual w/ commercial VM experience)
Bruno Souza (SOUJava)
Davanum Srinivas (Apache)
Dalibor Topic (Kaffe)
Tom Tromey (GCJ)
Weldon Washburn (individual w/ commercial VM experience)
Mark Wielaard (Classpath)
and the following individuals have expressed interest in participating
as committers for the Apache-licensed implementation
Jeroen Frijters (IKVM)
Ben Laurie (Apache)
Geir Magnusson Jr. (Apache)
Ricardo Morin (individual w/ commercial VM experience)
Bruno Souza (SOUJava)
Davanum Srinivas (Apache)
Dalibor Topic (Kaffe)
Tom Tromey (GCJ)
Weldon Washburn (individual w/ commercial VM experience)
These individuals will participate as Incubator Mentors
Noel Bergman
Ben Laurie
Geir Magnusson Jr.
Stefano Mazzocchi
Sam Ruby
Leo Simons
Davanum Srinivas
The following Apache Members will be the sponsoring members
Noel Bergman
Jason Hunter
Ben Laurie
Ted Leung
Geir Magnusson Jr.
Stefano Mazzocchi
Sam Ruby
Leo Simons
Davanum Srinivas
The following community members support this effort
Danese Cooper
Brian Goetz
Doug Lea
C *is* cross-platform.
The system libraries, on the other hand.. well, that has nothing to do with the language. If you want cross-platform code, use cross-platform libraries.
If you can stick to using only functions in K&R and the POSIX Programmer's Reference Guide, you will find that your code (if written properly) will run damn near anywhere.
If you want a little more functionality (as much as you need, really) without GUI, adding the Apache Runtime Library will get you there -- portably. Especially under unices and workalikes.
C++ -- I'm not qualified to comment on that.
Do daemons dream of electric sleep()?
I just hope they don't write it in Java
Yeah, I don't see the point in this much besides licence idiolegy. Why not contribute to GNU Classpath and Kaffe for example? One good Free J2SE implementation would be far more useful than multiple, not-quite-we're-almost-there implementations.
The great beauty of the linux desktop is that it, like all *x desktop windowing systems, is not standardised
Alas this is also one of its main weakness. I had once high hopes for Linux on the desktop (three of four years ago), but the way I see it now is that its more fragmented than ever. I think it will manage to reach something around 5% share of the market in four or five years, but the bulk of the users will probably just stay with Windowz.
"C++ -- I'm not qualified to comment on that."
C++ also have an ANSI standard. So, if you code following ANSI C++ and POSIX, your program should run on every unix (and NT). But C++ compilers are known to not following standars, so it is not that good.
Rethinking email
I noticed Bruno Souza of Brasil is involved. He had already set up a project to produce something like this in a group called SOUJava. There are also some people from ClassPath and GCJ involved. Does that mean code will be reused and relicensed from those projects, or is everything being done from scratch? Do they have an expected timeline? The Java standard libraries are HUGE.
It seems like maintaining binary compatibility between serialized classes (esp. for collections and java.lang classes) is essential, at least if you want to do J2EE stuff in the long run. It will be at least a nuisance to, say, reimplement java.util.HashMap in a binary-compatible way without illegally appropriating Sun's IP (something the project seems pretty conscious of in their charter/FAQ).
It's not impossible, but I think the IP challenge there is the real issue (not to mention the fact that your implementation is going to be constrained to being nearly identical to Sun's, at least in terms of overall strategy, if not line-by-line). If you read Sun's code in one window, and then write the same member variables in the same order in another window, is that copying code or not? And even if you do write something completely different (say, going with the HashMap example), you have to come up with some kind of transformation from your choice of state variables to sun's serialized state variables, which could look pretty nasty.
I also pity the poor bastard that has to write those AWT libraries...
perhaps it means that bugs will actually be fixed.
Is JamVM reentrant?
I've been looking for a small JVM that allows multiple independent instances of itself to be kicked off without interfering with each other.
I'm sorry, but I'm just really not seeing this supposed "fragmentation" as a barrier to Linux on the desktop.
It's a pretty good maxim, if you're a lion out to have some buffalo for lunch.
If, however, you write software and don't want to appear on the Microsoft cafeteria menu divide and become unconquerable might be a better one.
Once this is achieved you can deal with the bloat issue by simply not installing it, something not possible with standarized, monolithic bloat.
You will achieve full standardization of free software when you achieve full standardization of the human mind. You can easily achieve this by standardizing everybody but me, because I will then procede to shoot myself.
KFG
Quit the Java dependency. Head towards open standards.
How long will it take for the open source community to understand that C# is not only "a Java replacement", but a better technology? How long till people start reading the docs behind C#'s design?
Let's get this clear: Mono is free software, Java is not!
My intent is not to troll, but simply point out that, in the long run IMHO we should stick to Mono. Sun had its chance. It's done too little, too late.
Why all this investment of time on something that doesn't even have a standard by a credible overseer, like ISO, ANSI or ECMA?
This is perpetuating the Java/Sun dependency. Kick the habit!
Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
Pentiums didn't become really high-performance and free of notorious bugs until AMD made Pentium instructions run on a competing processor. Maybe Java needs more competition among virtual processors to see more innovations reach consumers.
--
make install -not war
The great beauty of the linux desktop is that it, like all *x desktop windowing systems, is not standardised
Actually, this sucks. It's supposed to be a Unix-like system. But people write source code full of Linuxism. As a result, some stuff is hard to port to a BSD system (a much more reliable aproximation of Unix).
If what you're defending was such a great idea, people wouldn't have created stuff like the LSB.
Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
Wow, I hope this goes well. I've for years felt that Java got a lot of things right (and a few things wrong). But I'll take a C program every time over a Java implementation.
Why? Because I believe in free software, and I try to use free software. While I might have a practical bone in me that would install Sun's no-cost JVM, it doesn't come packaged with my Linux distro.
If you want to develop for Java, there's this huge impediment to distributing your software. You've got to get the end user to thunk down an enormous environment first to support it.
And it doesn't always go well. That's why so many vendors ship with their own JVM. When I installed Oracle last summer, they had done exactly that. Only their bundled JVM didn't work. I ultimately discovered that I could get the software to function by excising that JVM and putting Sun's current offereing in its place. But I would describe the experience as a nightmare, and a less-experienced person would have found it hopeless.
A common platform, with a free license, that can be packaged by my favorite Linux distro is exactly what Java needs.
Go team.
Why could we expect Apache to do what no of the other free Java implementations have been able to do so far? Don't misunderstand me, I would really like to have a complete Free Java implemantation, that could be used as a drop-in replacement for Sun's, but unfortunately, all current implementations still are far for complete, especially for graphical applications using AWT, Swing, applets and so on...
why use a dying os like bsd ?
The reason I suggest this is that it would appear that the main purpose of the Harmony project is to create a vibrant, inclusive community. In that case, the open source world, Harmony, and Parrot, plus users of java, perl, python, ruby and tcl (for starters) can all benefit by combining two disparate groups of all-star programmers working in potentially complementary areas.
If any parts of the Harmony project can use parts being developed for Parrot, much time would be saved and the quality of both projects could increase. In addition, it would likely be easier for the Harmony project to meet its stated goals of collaboration and sharing of runtime components, etc. to do so with parrot. The Parrot FAQ also talks a bit about VM development, including working with a JVM, it sure sounds like there is some overlap with Harmony.
Perhaps the Parrot people don't need any help (I doubt they would say so though) and maybe the Harmony VM people can't stand the idea of not building from ground zero, or using only the Apache license and nothing else. If any of these three maybes are true then it is a sad story.
Also, I may be out of line but it sounds like parrot will enable sharing of code from different languages at runtime. If so that will just magnify what Harmony is trying to do in terms of bringing people together.
So humbly I would like to say that the ideas of creating a specification and reference implementation, and promoting collaboration and sharing of modular code sounds wonderful, and focusing on these and not wasting time reinventing the wheel could be a great move for Harmony, and contribute to refocusing the brainpower of the free software world, in the spirit of the Harmony and Parrot projects.
My guess is that Harmony has some really smart people and they are also well aware of the Parrot effort. Maybe some are already involved for all I know. Any comments one way or the other?
It's quite probable that once version 3 of the GPL is released, there'll be a strong effort from both sides to get some compatability between the two as incompatable licenses hurt everyone, whatever your ideological differences.
You can bet the GPLv3 will need it. I think the FSF will quickly find that it is next to impossible even for them to overcome the momentum of GPLv2, because many people have cut the "or later" part. Doesn't it seem wierd to license code under a license you don't even know what is? Anyway, that means there's a solid bulk of code with missing/dead (in the literal sense too) developers whose code can't be relicensed (assuming the GPLv3s changes are acceptable to everyone, might also be an interesting question).
Kjella
Live today, because you never know what tomorrow brings
... and open-source Solaris is "vaporware" even though there is no/nada/nil code available for the Apache J2SE 5.0 implementation. Some people need to have their heads screwed on right.
-- kryps
That hasnt been true for years.
:)
Since 2003 there have been enough high-quality compilers that achieve a near-perfect compliance to the standard that people actually use the features the language offers.
Besides, just look at boost and QT
I'm rooting for them, but that is a huge project.
There is no shortage of half finished FOSS implementations of Java.
I'll believe it when I see it, and I will be grateful to Apache for making it happen.
Thank god, this puts an end to the Mono fiasco.
Heh.
Or put another way "C" is theoretically cross platform but in practice it isn't.
I just did a backflip. :-)
:-)
:-)
:-)
This is great news!
I have several reasons why I like it:
1) The future financial stability of SUN Microsystems I think is pretty Dark. I think that because SUN is losing on all fronts with its RISC hardware to AMD/IBM's/Motorola's efforts in 64 bit computing during the past couple of years.
2) Although the best thing I love from SUN is the JCP org, it is not a gurantee that it will continue if SUN is purchased by another corporate entity.
Quite frankly, as SUN's financial posture has weakened over the years, as a Java developer that thought has given me and my customers the willies.
3)The impact of 2 on the OS community would allow a major frontal assualt to free corporate data from Microsoft to collapse in server rooms all over the world.
It would be a new DARK AGE in computing. Dogs and cats would be sleeping with each other and regular reboot scripts for servers and 3AM calls for network admins would become common place.
The loss of the JCP and license restructuring would kill a major reason to deploy build and utilize corporate data in a free way with trading partners by imposing possible licensing fees on existing projects.
4) Java and Linux are so "synergistic" (Can I say that?) in how they complement each other in so many ways in our fight to free corporate data from microsoft, that I can't begin to describe them all.....OK well, I will try.
Axis Web Services: I can deploy a axis sql query service on a old Fox pro app server and use it free of charge through a Linux app server. Saving corporate HQ in the process by getting data that was otherwise locked up to customers 24/7.
Hurray!
I don't need to budget to get data where it needs to go, just add another button on a web page and repatriot a OLD windows 2000 server to the cause of running Apache Tomcat/Axis and we are good to go. (Did I mention the old server all of a sudden Microsoft refuses to support with 2K runs twice as fast just with Linux on it??? Did I mention it is more secure? Did I mention I have the source code?)
Why, why OF COURSE I did!
Hurray!
Then of course, there are the hero moments in all this where everyone says:
Hackus? Hackus help us please!!
Why of course I will, lets format the windows partition and begin...
Hurray!
-Hack
Got Geometrodynamics? Awe, too hard to figure out? Too bad.
Sun has been making noise now and then about open sourcing Java.
Why not push them toward putting their money where their mouth is?
Ask them ( or better yet, ask IBM ) to release the java implementations they already have built under an apache license.
If that is still too liberal for them offer to help in writing a new OS license that will give SUN the control they want.
Whenever open source and Java come up in a thread someone will always make the point that keeping Java under Sun's control prevents it from being bastardized.
The example of C starting out as a multiplatform language always comes up.
This reasoning may be correct, or it may not be.
I know python implementations are not exactly the same across platforms. There are some things I can do on linux with python that I can't do on windows.
Are there any examples of multiplatform, open source languages out there, running, that do not require the program to learn about platform specific issues?
Several of those that are behind this proposal are either associated with IBM or works for IBM. Also factor in, that for many years now IBM has wanted SUN to open source Java without luck. So this is the solution? Good luck I say, what we see here is the prelude of yet another OSS fiasco like GNU's HURD.
...that project Harmony was the reason TrollTech chose to GPL (as versus seeing their strategic role usurped by an LGPL workalike). At which point Harmony dried up as redundant. So while it didn't per se do much, its historic impact isn't negligible.
Wrong. Download APR and you have cross-platform C.
You can also use the Mozilla Netscape Portable Runtime Library, that is cross-platform (on at least Windows and just about anything Unix). And, IIRC it is triple licenced GPL/LGPL/MPL so you can take it and use it in a GPL program no problems.
Is why they cant/wont take code from one or more existing JVMs and libraries and use it as a base.
We have GNU classpath
GNU GCJ
And others
Why havent we seen anyone take the good bits from all the different Open Source java projects and work on ONE free JVM that will sucessfully pass the Sun J2SE compatibility test (and therefore be a 100% implementation of JAVA)
Personally, the fact that no Open Source program comes even close to being able to pass the J2SE compatibility test is why I dont write anything in JAVA.
Most of my code is written in C and C++ with some stuff in Assembler of various kinds.
The last thing I want to see is the Perl6 project weighed down by another goal. Its bad enough people are wasting so much time toying around with Pugs, which regardless of what you read is throwaway code, yet seems to be capturing the interest of most of the posts on the perl6 lists.
Parrot? GIJ? This new implementation?
IMHO I feel the effort can be better spent on helping Mustang (1.6) and Dolphin (1.7) to be better than if Sun did it alone. Just fixing the outstanding bugs that's been on the bug parade is a great service to the Java community. I admire the spirit of wanting to reimplement Java, but this almost feels like a 'Netscape' to me.
www.rexguo.com - Technologist + Designer
Sure, FUD on the Linux front. Maybe it's true? What a mindfuck. How can a company with really bright minds be better than tripped out hippies working for free? Impossible.
Guys, I would suggest really focusing on windows.
---- Berlin Brown http://www.newspiritcompany.
No, the real problem I see, is that we have a number of Windowing Toolkits running. Once upon a time, you would be running only X11. In some cases, you'd be running Motif-based apps too. Now, you're running X11, Motif, custom widget apps like mplayer and xmms, GTK and KDE, in multiple different versions.
I've got 2GB's of memory, and starting a gnome desktop with a few KDE apps (k3b mostly), my system consumes a half a GB of memory before I start my services (apache, postgres, mysql, etc.) or applications.
Evolution and firefox are the principle desktop memory gobblers.
I love Python. I left Java by the wayside when I found Python. I love the sparse look and feel, I love the strength of the language, I love the fact that I don't have to deal with 1000 different indentation styles when I read other people's code, I hugely appreciate all the python modules people have written that implement everything from databases to graphing packages.
And Python is all over the place, installed and ready to run. My old RH9 system has Python; my Mac has Python; my Windows box has Python.
Python. C when you have to have the performance, certainly. Python otherwise. :-)
I've fallen off your lawn, and I can't get up.
Without Pugs the Perl6 project would be completely dead. At least someone has finally taken it upon himself to do something instead of just endlessly blathering about it. And why do you think that the Haskell code is throwaway? It will likely outlive Parrot. Pugs can target any backend for Perl6 without significant difficulty.
This is certainly unsatisfactory, but I don't see it as a problem, myself. It's worth noting that I can load up KDE, Firefox and a bunch of Konqueror File Manager instances, gaim (which does not used Qt, I don't think), two tabbed Konsoles, a Swing/Java app I wrote for myself, the Gnome System Monitor etc on my 256MB laptop and not touch swap (in fact, I botched the install and forget to add a swap partition - doh!). Don't give too much credence to the reported memory usage; things are much more complex than the numbers reported, and remember that Linux does not like having RAM free (as it is viewed as wasteful) so expands its (apparent) memory consumption according to how much is available.
But, this is a monstrous undertaking. Kaffe has been working on this for years, and they still don't have real production-ready VM and their classpath is still far behind Java 5. Gnu CLASSPATH has been working on building just the classpath component and they are still far behind Java 5, especially in the areas of Swing.
Just writing a VM that's as good as Sun's is a huge multi-year effort and that's only the beginning. I unzipped (but did not look at) Sun's classpath and it's 6561 files and 1,885,024 lines of code! And that's not counting the JVM which probably is also a huge base of tricky code. A very good developer might write about 200 lines of fully-debugged code per full-time day of fast coding. If the open source implementation ends up with about the same line-count (which it may or may not) and if it doesn't re-use any existing code (which it probably would reuse quite a bit), they would need 9400 days of full-time very fast developer time to get the classpath done. That's THIRTY-SEVEN FULL-TIME WORK YEARS! Just to write the classpath!
So, I hate to say it, but... I don't think it's going to happen.
I wish Sun would just open-source Java. I'm sure their execs don't think that matters but it is something which is truly holding back Java from breaking out.
You can take their shared source, port it to your platform - far easier than writing a new VM, get the port certified and release it. Look at blackdown.org for example. If you want to "embrace and extend" the VM, just make sure your new language is activated via an optional switch and is not called "Java". I don't see a problem with Sun's license unless you are Microsoft or a hobbyist who wants to distribute a VM without compatibility concerns. Then yes, you should write/have written code from scratch.
I shouldn't have posted above while I had mod points, since this troll crap is modded "Insightful" by the Windows trolls moderators and other idiots.
Look, stupid, this is not just a "licensing fetish" (although as has been discussed, there is a perfectly good reason for Apache to not use the GPL or like Sun's license.)
The point of this project is to provide a compatible free Java that Apache can use to underpin its numerous Java-based projects.
It's an excellent idea - unless Sun ever comes out with a truly OSS license. And if they do, it will probably be because such a project is gaining traction.
Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
The main problem with this is that sun is already working on the next version of java (v6/mustang) which is in beta at this time. So Apache will always be (at least 1) version behind the current release from sun, and will always be playing catchup....
I hope Classpath license will become compatible with Apache license, so that it will help both projects. As FAQ says :
13) Does this compete with Kaffe and Classpath?
People from Kaffe and Classpath are helping start this project! Their experience in the open source VM and class library is invaluable, and they bring problems that the larger architecture community discussion can help solve.
We will have an implementation under the Apache License, but we think of this as complementary rather than competitive. And when we solve a few small license interoperability issues, we expect we'll be able to complement each other even more.
.. does anyone else get a déja vù from the KDE-sponsored attempt to clone Qt back in the non-QPL 1.x days?
Michel
Fedora Project Contribut
Wrong.I downloaded it, my c program still isn't cross-compatible.
Oh i see, you want me to rewrite my entire program to use this library!
its not really a 'version' of java, its aiming to be java compliant.
Topic makes one think SUN is making an *offical* version with the new license.
Still, if they get blessed as compliant, this is a good thing for the free world..
---- Booth was a patriot ----
If you'd ever tried to write a large cross-platform Java app, you'd know that your description of C also fits Java.
Motif apps? Are you kidding? There are as many Motif apps on Linux as FLTK apps on Windows. And don't get me started on the tons of different custom controls in Windows apps...
The great beauty of the linux desktop is that it, like all *x desktop windowing systems, is not standardised - and therefore, you don't have to use a bloated implementation.
How the fuck is this insightfull ?! IT'S FUCKING OFF-TOPIC !!
How is a post by someone who's actually done some usefull simple arithmetic on this project get modded low as 0?
Are the Java fanboys the ones with mod points here?
Does it hurt when you count?
IBM could buy the Java related technology as an asset purchase from Sun and solve this whole issue by open sourcing it afterwards.
I'd like to see the current open source Java tools/VM efforts be redirected into the Mono C# CLR VM project.
This will force Sun to adopt more open licensing of their technology.
There is enough room for an eventuall merging of the back end/byte code interperters for Java, C# Mono, Perl, PHP and Python.
The VM should be open sourced and BSD equivalent licensed so that the major parties involved are guaranteed a future development path that is IP lawsuit free.
This would allow IBM, HP, Sun, etc. buy in for the long term.
Pugs is incredibly slow, slower than any 5.x release of Perl. Its in Tcl territory. The way Pugs is built, it is unlikely to get much faster, hence it is useless to anyone who really uses perl on a daily basis, which is why they should stop indulging it and move on.
I think that the most important ramification of this announcement is that Java will not die should Sun falter.
.NET, and .NET programming is currently the hot skill set.
;^)
The fact is, a lot of Fortune 500 corporations are nervous that Sun's waning profits and recent legal problems will result in their Java code being unsupported. Furthermore, they are seriously looking at Windows Server 2003 and Longhorn as a an alternative to their current Solaris and Unix solutions. As a result, there is currently a lot of hype about
Well, I think an open source Apache implementation of Java 5 will reverse the current course. Look at the continuing popularity of Apache httpd. The marriage of Java with the IT "brand recognition" of the Apache Foundation is a slam dunk that will ensure Java's perpetuity.
I just hope they can resist the temptation to look in the Src.zip that comes with every Java SDK
C# has good syntaxic sugar!
More correctly -- C code can be cross platform, if you care to make it so.
The problem is programmers who don't.
When I write code which I intend to be portable, I usually use the man pages from at least one other OS as my reference for the system libraries, if it's outside of the POSIX realm. Well, that's how I used to. A little more than 2 years ago I switched all new projects to APR and haven't looked back. Damn stuff even runs on Windows without tweaking.
Of course, I also use fairly strict typing (lots of typedefs, enums, consts) and throw several compiler warning flags to let me know when I'm being dumb. Like comparing signed and unsigned, promoting pointers to greater alignmnent, etc. But 7 years of hacking mostly-SPARC has got me pretty good at that -- they're a lot pickier than Intel boxes. The only thing that gets me now and then are endian issues -- but those aren't language specific, anyhow.
Do daemons dream of electric sleep()?
Fork in the Open Source Java world.
Why doesn't Sun just make J2SE open-source? They give it away, anyway. I think, originally, it was to maintain control away from the likes of Micro$oft, but now, MS has gone their own way.
I have, and actually i found it ported well from windows to linux and solaris.
The only thing is the paths on windows as people don't usually use cross platform or relative paths.
The only time i had issues was in the early days of java with applets. But my experience of moving large web applications is that it is relatively easy. In fact i've had more problems switching JVMs within a platform than switching platforms - one thing that got me was some people had started to rely on the collection ordering which happened on the SUN JVM to always stay in the same order but on the IBM one recreating the same collection did not maintain ordering, which was fair enough there were no guarantees in the specs.
On the other hand back in the days i wrote some J++ code for windows my god it was the WORST i have EVER experienced, just getting it to run on all versions of windows took weeks not hours. detecting network connections without triggering a RAS dialup across 95->2k was hilariously difficult.
Wouldn't it be better to compile to native code then?
I guess I don't understand the point of JIT. If performance matters, compile to native. If not, use a VM. Why bother with the middle ground?
Free Java needs both a complete class library and a fast JVM to be useful.
Gee, ya think?
You seem to be forgetting that the class libraries may give the required compatibility, but it is largely the JVM which provides the necessary speed.
You seem to be forgetting that a VM that runs something incorrectly but really fast is useless. Getting a VM to perform within 50% of Sun's JVM's speed is trivial, and within 20% of Sun's JVM's speed would take another year of work by a single talented programmer. Writing a 100% compatible Java 1.5 class library would take 100 developers around 5 years if they were working on it fulltime. On a dollar value basis the class libraries are worth 100 times as much as the VM technology due to the amount of work involved. Try to think less like a programmer and more like a business person.
Different JVMs are different platforms (since the JVM is the platform). The problems you are describing back up what I was saying about cross-platform Java. Sun's claims of Write Once Run Anywhere are nonsense... you write it once and end up testing it on every JVM and realising that they are all bloody different in subtle tricky and fantasically irritating ways. This process will, in time, reduce you to bitter ranting on slashdot about how much Java sucks and how Sun's claim are all marketing crap.
Just look at me!
sure jvms are "A" platform but in this context I was talking about different hardware architecture platforms in that send running the sun JVM across all the hardware platforms actually gives you remarkably good portability these days.
Atleast in my experience.
I know what you were talking about, but you missed the point. In the Java context, the different JVMs are *the* platforms, not the different computer architectures. If you run an app on Sun's JVM on Linux and try it on Sun's JVM on Windows you'll find yourself plesantly surprised at how well it works. Try it across different JVMs, and it's a different, irritating, finicky, pain-in-the-arse story.
You won't hear Sun using this tagline in the their marketing though: "JAVA... portable only if you use our software". The fact is, Microsoft defines cross-platform as Windows NT, Windows XP, Windows 2000 etc etc and Sun does much the same thing (albeit with significantly less humbug and flat-out lying)..
The message i originally replied to was talking about cross-platform C. I was just pointing out that if you have a C program and a java program and you want to move them to a different OS or hardware platform the java program can be moved easily and the C can't.
The C program will probably have to be rewritten to make use of some cross-platorm library and then you'll probably find you don't have all the libraries you need. Almost by definition a java program will run on any underlying hardware/OS platform.
I don't disagree about the JVM and marketting issues but that is a whole separate issue as would be portability of c code across C compilers for example.
This is good news, basically, but who needs this? There are better languages available that have been completely open for decades. May I mention Python?
If mono is "so great", why is MS then still doing .net ? Why are they not simply moving down to mono ?
.net.
;-)
.net is loosing its momentum, and people are realizing it is nothing more but Java, with MS links added. Actually, the only reason most people are staying with .net is VS ! Because those people are adicted to VS (which is a good tool), but as soon as you become an expert with .net you realize that "things are not that easy as you have been told" and start hammering things manually. Then the headaches starts, but it is tool late, and the only way out for you is aspirin tabs.
:)
;-)
Maybe because, mono is a small subset of a platform and does not cover all the features of a real complete platform.
Mono is nice, but if can not compete with MS
Just because MS will never open all its specification. They have just open some small pieces so that the MS zeelots can stay adicted to their MS technologies and the sooner or the later will come back to the real MS platform : windows !
Mono can not compete with Java, or it is like comparing the DOS with the latest linux liveCD distro
Ok, kidding aside,
It is all about choice.
I've choosen my machine, my OS, my applications, my development tools and they are all OSS ! Now I will have also my Java VM that will be OSS, so the entire stack will be opensourced
Make your choice