Most OSes in this world don’t have a graphical front end.
So yeah, before you start all that useless “why do we need another OS?”, “why don’t the developers join linux” or “does it have Mozilla?”, I suggest you think hard before you comment on such stories.
Sounds cool. While I think a platform like Java doesn’t need to run on the bare metal, the lack of need for memory protection (due to Java’s type safety) might get them some performance, as well as good shared memory btw. all Java programs running (unlike most OSes, where two Java processes running eat up _twice_ the memory, i.e. no memory sharing like C programs do).
I also like that they try to self-host most of the system in Java.
Most OSes in this world don’t have a graphical front end.
And thatnk god this one doesn’t either. COuld you imagine a Java OS with a GUI? You’d need a supercomputer with 32 processor and 4 terabytes of RAM just to boot it inside of one millenium. Personally, I could think of more productive things to do than writing an OS in Java – like counting my belly-button lint.
…JavaOS. as i recall sun had put together a java based OS a while back. i searched thier site and didn’t seem to find anything.
good luck to this project. would be nice to see it up and running supporting gui based apps. (not to mention a more unix-like (or more acruatly bash-like) shell, whats the deal with the ‘dir’ command )
JavaOS was created primarily for the “network computer” that Sun was backing heavily in the late nineties. However, once the “network computer” was abandoned, so was the OS. I think an OS written in Java is an excellent idea.
Oh a Java GUI could work, just that everything except the actual logic glue would be have to be in C/C++ or whatever, in native code. Might as well just have a kernel like Linux, with maybe wxWindows/wxPython ported to DirectFB or something.
I think it would be super-cool to have a whole graphical env. in wxPython.
but this sounds like a fun and interesting project
will be very interesting to see what becomes of it
i remember seeing something on the oskit pages one time about a java os they were working on but i didnt keep track of it (i didnt see the point at the time … found the oskit itself much more interesting then)
“just that everything except the actual logic glue would be have to be in C/C++ or whatever”
well, i realy don’t know what it would ‘realy’ take, but it seems that once the ‘os’ provide a FB (which it seems JNode is working on however i seemed not to get that working via the demo CD), then the only real thing you would need on top of that is your basic graphic methods, line, circle, bitmap stuff.
no small task, but as long as you stick with swing and just drop the heavy weight stuff, all the update and redraw stuff should be done via java.
haven’t looked at it in a realy long time but i think that java already also has the window managment and such, even themeable to a extent
well, already off on a tangent, sorry
jnode looks kewl, let me know when you guys have a ver that can run netbeans
ok, i am not an expert, so don’t laught at me if my question seems too stupid…
as far as i understand it, Java doesn’t allow direct manipulation on pointer/memory address. given this, how can a Java VM, which is supposed to handle the memory stuffs for Java, be written in a language that relies on a VM to handle memory? It seems to be a chicken or egg issue to me… I am sure they can do it since there are screenshots posted already, but i just can’t figure out how. can anyone enlighten a newbie?
I work on it an let me tell ya that we are very close to get AWT running. You all said something about JavOs developed a few years ago by SUN. Well it has nothing to do one whith each other..and as you can remember since 4-5 years(even more) the processing power is 10 times bigger. If the AWT is implemented to draw pixels, lines..etc using driver routines than the AWT can be as fast as a C++ GUI. For all of you that don’t know SWING is based on AWT and AWT has no window manager..it uses the host OS widget library. So for example windows jdk uses Windows GUI which is very slow..and buggy so AWT for windows is much slower that it can be. We used a Open source widget library writen by Zaval and we will map AWT to use this library. What I wanna say is that it will not be as fast as windows in the first place but in time….
so JNode will have a GUI..and soon enaugh..I hope 1-2 weeks. But until now we have a VM running , threading is implemented, TCP/IP, VGA, etc… but the best part is that JNode uses a plug-in architecture similar to Eclipse which makes it very configurable and extandable. You should download the ISO and check it out. For all of you who think an OpenSource OS should be like linux..you are wrong. you see JNode will have no commands but aliases which are mapped on classes that must have a main() method. IF YOU WANNA HELP PLS DO IT!!! WE NEED HELP..it is FUN and just thinking that a Java OS would have billions of very nice APPs just sais a lot about the future of such an OS. In time can e FAST and STABIL and every think that you want…but only if peoples get involved..and HELP out.
“So for example windows jdk uses Windows GUI which is very slow..and buggy ”
What a load of crap.
“In time can e FAST ”
Come on man…how can you said that ?!! You write this stuff in a language who has all the methods virtual by default !!! Who can’t do pointers (value types pointers…don’t give me the “everything in Java is a pointer” crap), who will have some “let’s not modify the JVM, cast big time ” and still call them generics !!! HOW CAN SOMETHING WRITTEN IN JAVA BE FAST ?!??? Fast for “a supercomputer with 32 processor and 4 terabytes of RAM” :-))
Dude..it either you are a JAVA NOOB either you just like to brag around. java code is FAST if it is written to be FAST. and about virtual stuf..it is not true..abstract methods are not virtual methods. It seems that you are some kind of C++ freak. hmm…about pointer..all objects from java are pointers only that they are called references. Well it is true that there is no pointer arithemtics like in C++ but who need that? What I need is to be able to pass around pointers (references) and not values and to be able to point from 2 places to the same object. So calm down..take a book and read som..than come and trash a serios forum. If you would know something about Win32API you would knoe that the WindowsGUI is a bunch of TRASH and the spped is the same on a 2.5 Ghz processor..
Did i mention “abstract”? Dude…all instance methods in Java are virtual BY DEFAULT !! You mean….you didn’t knew this ? :-))
>” …don’t give me the “everything in Java is a pointer” crap”
>”all objects from java are pointers only that they are called references”.
I’ve said don’t give me that :-)). If i say A VALUE TYPE pointer do you understand ?
With the pointer arithmetic thingie…man you really show off your ignorance.
And the WIN32GUI is a crap…hahaha..that’s way SWT kicks ass and the lame AWT/Swing are so slow…it’s because of the Window32 GUI. :-)))
I suggest you dude to get your hands on some real programming books and start reading….and stop listen to those stupid Java worshipers..no matter what they say..operator overloading is a good thing :-))
Java’s not as SLOW as everybody says it is. The biggest issue with Java is startup time, which could definitely be improved. However, with a whole Java OS, I’d imagine application startup would be damn fast since the JVM is already loaded. Once I have a Java app up and running, it is actually faster than some native apps such as OpenOffice.org. That’s written in C++…which only goes to show implementation language really doesn’t mean jack when it comes to application performance. I can write the slowest POS C++ program out there, and I can also write a really sleek, sexy, fast Java app. If you want an example of fully functional, sexy, and sleek Java apps, look at JEdit, Eclipse, NetBeans, and LimeWire.
Had a similar idea myself a while back nice to see that someone is doing it. Sounds like you guys could use a hand… when I have the time I’ll do what I can.
In the meantime:
“Native code compilation
For each method invocation a decision is method whether to use the compiled code of the method (if available) or to start the interpreter for that method. This decision is very simple. If there is compiled code, use it, otherwise use the interpreter.
On each method invocation, a counter of the internal method structure is incremented. A background thread goes over all of these counters and compiles (in the background) those methods that are used most often. (This thread has not yet been implemented).”
That will work but only for code that is well written (i.e. finely grained). If someone has a large method that does most of the work it won’t work out. Not quite sure what the solution is but you may be better off holding the code as a call tree and using that to identify hot-spots during execution.
I don’t know much about Java, but this Java OS seems very interesting. It could be a good way of solving some of Java performance-related problems, which (for me, at least) are:
1. unshared VM
2. Slow startup
3. Slow graphics (swing)
for problem 1: one could try to write an ‘integrator application’: probably a shell which would read class names and parameters on the command line and it would load the class and run it’s main method in a new thread.
issues: 1a. what if an app starts messing up the vm? what’s the protection the other apps can expect?
1b. if some app calls System.exit(), the entire VM exits. At least this is the case with VMs right now iirc.
1c. this is probably easy, but I don’t know how to do it now: how can one redirect standard io on a per-thread basis?
for problem 2: well, compiling large parts of the classes loaded (for jit, even hotspot) makes for a slow startup. an ‘integrator app’ like a shell would cause a lot of the compiled code to be shared. good. but how about memory usage? java is quite a memory hog.
for problem 3: I don’t know of a reasonable solution. swing is conceptually slow (portable with high costs: doesn’t use any hw accelleration – or only started recently to use it). And no, I’m not unsatisfied with my apps, I find the official demos very slow. And if those aren’t written properly, I wonder what is. an awt with a close mapping to OS GUI API would be quite fast. but is swing pure java? not according to the kaffe guys …
It would be really great if this OS could solve at least the first two problems and come up with some reasonably fast gui. But how do you protect one app against the other? How is the System.exit() issue addressed? with something like VMs inside VMs?
And what’s the point with portability if the entire OS is Java? Java has sacrificed a lot to be portable, but the JavaOS just defeats this purpose. After all, isn’t the java VM a fake OS already (looking like an OS to the app, but just delegating stuff to the underlying _real_ OS)? Sadly, a one-app-fake-OS …
Anyway, this Java OS seems interesting enough to download and play with, maybe even try to find ways to contribute.
Keep up the good research work, maybe something interesting will come out of it!
Cheers,
Miron Brezuleanu
PS: any projects for a vi clone?
PPS: about the “all methods virtual” argument: have you heard of Eiffel (the language, not the engineer or the tower) ? You don’t need to squeeze every cycle of its computing power if you’re not inside a bottleneck sequence.
my name is Michael Klaus and I’m one of the developers contributing to JNode. There were some comments posing questions in here, so I’ll try to answer them:
How do you do direct memory acces in Java?
This is just a question of the API. We got an API that allows direct memory acces, wich at some level indeed uses a native part. The implementation of Port and IRQ access, the core mechanisms to interact with hardware, are also accessible through the JNode API.
Isn’t this frikkin slow?
Right now, we’re indeed slower than, for example, the SUN VM. We are currently working on performance increase through technologies like JIT and method inlining, but our main priority is to get more hardware to work with JNode. Technically, JNode could once outperform any VM, as the quite thick translation layer Java->OS is not existing in our approach. As an OS, JNode could start up much slower, as we don’t aim to support much of the legacy hardware current OSs have to deal with.
Why doesn’t the file system work?
This is due to the missing glue between our file system implementation and the file access methods of the Java API. We’re working on this issue and will hopefully solve it for the next release.
Geez, the shell sucks!
This is one part we’ve been greatly improving, and are improving right now. We got a working command line completion, history and a dynamic Alias resolution (think of it as the wrapper scripts you have to write for java apps to start them by a command name, just much easier to use). Command line editing is in progress and will also be in the next release.
When will JNode have a GUI?
We can’t say yet. It sure doesn’t make much sense without having a window manager. We will announce all bigger steps here on OSAlert.com, so stay tuned.
Any one of you feel free to contribute code, graphics, bug reports and any idea you might have to improve JNode.
This is an intresting project, there has been many threads on the Java Developer Connection on Java based OSes. [ http://forum.java.sun.com/ ]
1. unshared VM
Doesn’t Apples JVM have this, and I think its comming in 1.5 or 1.6
2. Slow startup
This will vertually (but not completly) vanish with a shared VM.
3. Slow graphics (swing)
You do have other options which are fast, but don’t have such a nice API as Swing (IMO), include wx4j and SWT.
PS: any projects for a vi clone?
You can already get a GCC back end which can compile to Java Byte Code (not GCJ, but for the C, C++ compiler). Alas it has not been updated for quite some time, but you could (with lots time and effort) make VIM work on Java + JCurses/JNode.
my name is Ewout Prangsma and I’m the founder of JNode.
A lot of interesting remarks have been made on this topics and I’m very pleased to see that so many people have an opinion about a new Java OS.
Since JNode has gone public only 82 days ago, it has made some incredible progress. I think that it is realistic to have dreams about a full-featured OS all written in portable Java. Will it be slow for a while… yes, but we’re working on that and by implementing it smart and avoiding the typical overhead of Java to OS mappings, we hope and expect to achieve a respectable performance.
But that is not our primary goal. We want develop an OS that is really easy to use, install, maintain and port and do that all in Java.
We have already released 2 alpha version are we’re about to release another version. Our first beta version will emerge as soon as the following features are in place:
– GUI implementation
– TCP/IP networking
– Disk I/O, FAT16/32, (hopefully) Ext2 filesystems
Until that time, we will be releasing state of development version about every month.
For those who are interested in helping us realising these goals & dreams, please contact me.
For those who say it cannot be done, maybe you’re right, the future will tell, but in the mean time we’re having a whole lot of fun with a Java OS that works!
Later, we need to implement a c,c++ compiler, that compiles the source made in c,c++ in java bytecode and the linux-guys won’t have an excuse to not use it!!!!! P
You can already get a GCC back end which can compile to Java Byte Code (not GCJ, but for the C, C++ compiler). Alas it has not been updated for quite some time.
GNU classpath is licenced under the GPL but the copyright holders (FSF) “give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.”
OK, that means you will be able to write commercial applications for GNU classpath (which is used by JNode).
As far as it is concerning JNode (the kernel, the VM, the JIT compiler, …), you can use it for any purpose, commercial or not commercial, but you aren’t allowed to modify it without licencing the result under the LGPL. But the LGPL allows you to link your code (maybe a driver, you wrote about embedding) with JNode. This means you are allowed to create a plugin (e.g. to provide drivers, file system support, …): http://jnode.sourceforge.net/plugins.htmlhttp://jnode.sourceforge.net/extensionpointref.html
I am very excited about this OS. What a great thing to write in such a short period of time. I was disappointed when jos.org folded. They didn’t appear to be focused enough.
Many of the comments here are amusing. I do think that performance will improve. Java might not ever be faster than C but it might get to around 90%. It’s the stuff that makes you safe and stable (GC, bounds checking, etc) that slow things down, not the language itself. I also know that the Eiffel language (which has similar features to Java) does many performance tricks and can exceed C++ performance for a fully OOP program. Also, the GUI should be fast as complexity and layering will be absent.
This OS will be great for black box kind of stuff. Delivering a turn-key solution with a J2EE server and Java SQL server would be nice. No complicated and crazy OS to have to worry about breaking on you.
IDEA: Another interesting (dead) project was Jalepeno by IBM. This was a similar concept. I think that they ONLY did JIT. They didn’t have an interpreter. If bootstrap classes could be precompiled, and all other classes be cached to disk, you could do away with the interpreter. The cache would handle MOST cases. Of course, you need to get your disk filesystem up and running first. This might simpify things without much or any cost to performance.
Good luck. Maybe I’ll contribute when I get some time.
What’s this deal about Java being a turtle? Java is fast. Not as fast as assembly, but fast. *Wonders why they use java on space shuttles, cell phones, video games, etc. if it is so slow? Also, I think this is a great idea, as long as the coders don’t f**k up, I think JNode will be one hella stable, fast, dependable operating systems. Also, JavaOS’s are old. There are many JavaOS’s already out there, like on cell phones, etc…
Looks great! I was looking for an Java OS for a long time (think jos is dead) for a Java Processor that I’m working on. Do you JNode guys think it will be possible to run it on a small system: JVM is in hw (i.e. processor), no compiler, no gui but network and only 1MB ram!
At the moment I can run a Web server on Ethernet, Slip and PPP connection below 24 kB.
Kinda looks a lot like my 1992 vintage DOS screens.
Most OSes in this world don’t have a graphical front end.
So yeah, before you start all that useless “why do we need another OS?”, “why don’t the developers join linux” or “does it have Mozilla?”, I suggest you think hard before you comment on such stories.
Sounds cool. While I think a platform like Java doesn’t need to run on the bare metal, the lack of need for memory protection (due to Java’s type safety) might get them some performance, as well as good shared memory btw. all Java programs running (unlike most OSes, where two Java processes running eat up _twice_ the memory, i.e. no memory sharing like C programs do).
I also like that they try to self-host most of the system in Java.
I think the idea is cool.
Most OSes in this world don’t have a graphical front end.
And thatnk god this one doesn’t either. COuld you imagine a Java OS with a GUI? You’d need a supercomputer with 32 processor and 4 terabytes of RAM just to boot it inside of one millenium. Personally, I could think of more productive things to do than writing an OS in Java – like counting my belly-button lint.
…JavaOS. as i recall sun had put together a java based OS a while back. i searched thier site and didn’t seem to find anything.
good luck to this project. would be nice to see it up and running supporting gui based apps. (not to mention a more unix-like (or more acruatly bash-like) shell, whats the deal with the ‘dir’ command )
JavaOS was created primarily for the “network computer” that Sun was backing heavily in the late nineties. However, once the “network computer” was abandoned, so was the OS. I think an OS written in Java is an excellent idea.
Oh a Java GUI could work, just that everything except the actual logic glue would be have to be in C/C++ or whatever, in native code. Might as well just have a kernel like Linux, with maybe wxWindows/wxPython ported to DirectFB or something.
I think it would be super-cool to have a whole graphical env. in wxPython.
but this sounds like a fun and interesting project
will be very interesting to see what becomes of it
i remember seeing something on the oskit pages one time about a java os they were working on but i didnt keep track of it (i didnt see the point at the time … found the oskit itself much more interesting then)
“just that everything except the actual logic glue would be have to be in C/C++ or whatever”
well, i realy don’t know what it would ‘realy’ take, but it seems that once the ‘os’ provide a FB (which it seems JNode is working on however i seemed not to get that working via the demo CD), then the only real thing you would need on top of that is your basic graphic methods, line, circle, bitmap stuff.
no small task, but as long as you stick with swing and just drop the heavy weight stuff, all the update and redraw stuff should be done via java.
haven’t looked at it in a realy long time but i think that java already also has the window managment and such, even themeable to a extent
well, already off on a tangent, sorry
jnode looks kewl, let me know when you guys have a ver that can run netbeans
ok, i am not an expert, so don’t laught at me if my question seems too stupid…
as far as i understand it, Java doesn’t allow direct manipulation on pointer/memory address. given this, how can a Java VM, which is supposed to handle the memory stuffs for Java, be written in a language that relies on a VM to handle memory? It seems to be a chicken or egg issue to me… I am sure they can do it since there are screenshots posted already, but i just can’t figure out how. can anyone enlighten a newbie?
I work on it an let me tell ya that we are very close to get AWT running. You all said something about JavOs developed a few years ago by SUN. Well it has nothing to do one whith each other..and as you can remember since 4-5 years(even more) the processing power is 10 times bigger. If the AWT is implemented to draw pixels, lines..etc using driver routines than the AWT can be as fast as a C++ GUI. For all of you that don’t know SWING is based on AWT and AWT has no window manager..it uses the host OS widget library. So for example windows jdk uses Windows GUI which is very slow..and buggy so AWT for windows is much slower that it can be. We used a Open source widget library writen by Zaval and we will map AWT to use this library. What I wanna say is that it will not be as fast as windows in the first place but in time….
so JNode will have a GUI..and soon enaugh..I hope 1-2 weeks. But until now we have a VM running , threading is implemented, TCP/IP, VGA, etc… but the best part is that JNode uses a plug-in architecture similar to Eclipse which makes it very configurable and extandable. You should download the ISO and check it out. For all of you who think an OpenSource OS should be like linux..you are wrong. you see JNode will have no commands but aliases which are mapped on classes that must have a main() method. IF YOU WANNA HELP PLS DO IT!!! WE NEED HELP..it is FUN and just thinking that a Java OS would have billions of very nice APPs just sais a lot about the future of such an OS. In time can e FAST and STABIL and every think that you want…but only if peoples get involved..and HELP out.
“So for example windows jdk uses Windows GUI which is very slow..and buggy ”
What a load of crap.
“In time can e FAST ”
Come on man…how can you said that ?!! You write this stuff in a language who has all the methods virtual by default !!! Who can’t do pointers (value types pointers…don’t give me the “everything in Java is a pointer” crap), who will have some “let’s not modify the JVM, cast big time ” and still call them generics !!! HOW CAN SOMETHING WRITTEN IN JAVA BE FAST ?!??? Fast for “a supercomputer with 32 processor and 4 terabytes of RAM” :-))
Dude..it either you are a JAVA NOOB either you just like to brag around. java code is FAST if it is written to be FAST. and about virtual stuf..it is not true..abstract methods are not virtual methods. It seems that you are some kind of C++ freak. hmm…about pointer..all objects from java are pointers only that they are called references. Well it is true that there is no pointer arithemtics like in C++ but who need that? What I need is to be able to pass around pointers (references) and not values and to be able to point from 2 places to the same object. So calm down..take a book and read som..than come and trash a serios forum. If you would know something about Win32API you would knoe that the WindowsGUI is a bunch of TRASH and the spped is the same on a 2.5 Ghz processor..
“If you would know something about Win32API you would knoe that the WindowsGUI is a bunch of TRASH and the spped is the same on a 2.5 Ghz processor..”
But what about us poor schmucks running 450 – 500 Mhz machines?
Java has only started be to quick with JDK 1.4.1_02, but it is still not as fast as native code.
Developers who write code using the philosophy of “if it runs slow, you need a faster CPU” don’t get my business, or interest.
Did i mention “abstract”? Dude…all instance methods in Java are virtual BY DEFAULT !! You mean….you didn’t knew this ? :-))
>” …don’t give me the “everything in Java is a pointer” crap”
>”all objects from java are pointers only that they are called references”.
I’ve said don’t give me that :-)). If i say A VALUE TYPE pointer do you understand ?
With the pointer arithmetic thingie…man you really show off your ignorance.
And the WIN32GUI is a crap…hahaha..that’s way SWT kicks ass and the lame AWT/Swing are so slow…it’s because of the Window32 GUI. :-)))
I suggest you dude to get your hands on some real programming books and start reading….and stop listen to those stupid Java worshipers..no matter what they say..operator overloading is a good thing :-))
Java’s not as SLOW as everybody says it is. The biggest issue with Java is startup time, which could definitely be improved. However, with a whole Java OS, I’d imagine application startup would be damn fast since the JVM is already loaded. Once I have a Java app up and running, it is actually faster than some native apps such as OpenOffice.org. That’s written in C++…which only goes to show implementation language really doesn’t mean jack when it comes to application performance. I can write the slowest POS C++ program out there, and I can also write a really sleek, sexy, fast Java app. If you want an example of fully functional, sexy, and sleek Java apps, look at JEdit, Eclipse, NetBeans, and LimeWire.
Had a similar idea myself a while back nice to see that someone is doing it. Sounds like you guys could use a hand… when I have the time I’ll do what I can.
In the meantime:
“Native code compilation
For each method invocation a decision is method whether to use the compiled code of the method (if available) or to start the interpreter for that method. This decision is very simple. If there is compiled code, use it, otherwise use the interpreter.
On each method invocation, a counter of the internal method structure is incremented. A background thread goes over all of these counters and compiles (in the background) those methods that are used most often. (This thread has not yet been implemented).”
That will work but only for code that is well written (i.e. finely grained). If someone has a large method that does most of the work it won’t work out. Not quite sure what the solution is but you may be better off holding the code as a call tree and using that to identify hot-spots during execution.
You may want to have a look at the whitepapers here:
http://java.sun.com/products/hotspot/
For stuff to get your speed up.
Hi everyone,
I don’t know much about Java, but this Java OS seems very interesting. It could be a good way of solving some of Java performance-related problems, which (for me, at least) are:
1. unshared VM
2. Slow startup
3. Slow graphics (swing)
for problem 1: one could try to write an ‘integrator application’: probably a shell which would read class names and parameters on the command line and it would load the class and run it’s main method in a new thread.
issues: 1a. what if an app starts messing up the vm? what’s the protection the other apps can expect?
1b. if some app calls System.exit(), the entire VM exits. At least this is the case with VMs right now iirc.
1c. this is probably easy, but I don’t know how to do it now: how can one redirect standard io on a per-thread basis?
for problem 2: well, compiling large parts of the classes loaded (for jit, even hotspot) makes for a slow startup. an ‘integrator app’ like a shell would cause a lot of the compiled code to be shared. good. but how about memory usage? java is quite a memory hog.
for problem 3: I don’t know of a reasonable solution. swing is conceptually slow (portable with high costs: doesn’t use any hw accelleration – or only started recently to use it). And no, I’m not unsatisfied with my apps, I find the official demos very slow. And if those aren’t written properly, I wonder what is. an awt with a close mapping to OS GUI API would be quite fast. but is swing pure java? not according to the kaffe guys …
It would be really great if this OS could solve at least the first two problems and come up with some reasonably fast gui. But how do you protect one app against the other? How is the System.exit() issue addressed? with something like VMs inside VMs?
And what’s the point with portability if the entire OS is Java? Java has sacrificed a lot to be portable, but the JavaOS just defeats this purpose. After all, isn’t the java VM a fake OS already (looking like an OS to the app, but just delegating stuff to the underlying _real_ OS)? Sadly, a one-app-fake-OS …
Anyway, this Java OS seems interesting enough to download and play with, maybe even try to find ways to contribute.
Keep up the good research work, maybe something interesting will come out of it!
Cheers,
Miron Brezuleanu
PS: any projects for a vi clone?
PPS: about the “all methods virtual” argument: have you heard of Eiffel (the language, not the engineer or the tower) ? You don’t need to squeeze every cycle of its computing power if you’re not inside a bottleneck sequence.
Hi there,
my name is Michael Klaus and I’m one of the developers contributing to JNode. There were some comments posing questions in here, so I’ll try to answer them:
How do you do direct memory acces in Java?
This is just a question of the API. We got an API that allows direct memory acces, wich at some level indeed uses a native part. The implementation of Port and IRQ access, the core mechanisms to interact with hardware, are also accessible through the JNode API.
Isn’t this frikkin slow?
Right now, we’re indeed slower than, for example, the SUN VM. We are currently working on performance increase through technologies like JIT and method inlining, but our main priority is to get more hardware to work with JNode. Technically, JNode could once outperform any VM, as the quite thick translation layer Java->OS is not existing in our approach. As an OS, JNode could start up much slower, as we don’t aim to support much of the legacy hardware current OSs have to deal with.
Why doesn’t the file system work?
This is due to the missing glue between our file system implementation and the file access methods of the Java API. We’re working on this issue and will hopefully solve it for the next release.
Geez, the shell sucks!
This is one part we’ve been greatly improving, and are improving right now. We got a working command line completion, history and a dynamic Alias resolution (think of it as the wrapper scripts you have to write for java apps to start them by a command name, just much easier to use). Command line editing is in progress and will also be in the next release.
When will JNode have a GUI?
We can’t say yet. It sure doesn’t make much sense without having a window manager. We will announce all bigger steps here on OSAlert.com, so stay tuned.
Any one of you feel free to contribute code, graphics, bug reports and any idea you might have to improve JNode.
Greetings,
Michael Klaus
This is an intresting project, there has been many threads on the Java Developer Connection on Java based OSes. [ http://forum.java.sun.com/ ]
1. unshared VM
Doesn’t Apples JVM have this, and I think its comming in 1.5 or 1.6
2. Slow startup
This will vertually (but not completly) vanish with a shared VM.
3. Slow graphics (swing)
You do have other options which are fast, but don’t have such a nice API as Swing (IMO), include wx4j and SWT.
PS: any projects for a vi clone?
You can already get a GCC back end which can compile to Java Byte Code (not GCJ, but for the C, C++ compiler). Alas it has not been updated for quite some time, but you could (with lots time and effort) make VIM work on Java + JCurses/JNode.
At some point you will support some GUI API in your OS. Are you planning to go with Swing o SWT? Any other? Your own API?
At some point you will support some GUI API in your OS. Are you planning to go with Swing or SWT? Any other? Your own API?
Hi there,
my name is Ewout Prangsma and I’m the founder of JNode.
A lot of interesting remarks have been made on this topics and I’m very pleased to see that so many people have an opinion about a new Java OS.
Since JNode has gone public only 82 days ago, it has made some incredible progress. I think that it is realistic to have dreams about a full-featured OS all written in portable Java. Will it be slow for a while… yes, but we’re working on that and by implementing it smart and avoiding the typical overhead of Java to OS mappings, we hope and expect to achieve a respectable performance.
But that is not our primary goal. We want develop an OS that is really easy to use, install, maintain and port and do that all in Java.
We have already released 2 alpha version are we’re about to release another version. Our first beta version will emerge as soon as the following features are in place:
– GUI implementation
– TCP/IP networking
– Disk I/O, FAT16/32, (hopefully) Ext2 filesystems
Until that time, we will be releasing state of development version about every month.
For those who are interested in helping us realising these goals & dreams, please contact me.
For those who say it cannot be done, maybe you’re right, the future will tell, but in the mean time we’re having a whole lot of fun with a Java OS that works!
Ewout
Since the OS is written in Java, does it mean that all of its applications will have to be written in Java?
Victor.
You catch it!!! brainy guy.
It’s an amazing idea!!!!!
Later, we need to implement a c,c++ compiler, that compiles the source made in c,c++ in java bytecode and the linux-guys won’t have an excuse to not use it!!!!! P
You can already get a GCC back end which can compile to Java Byte Code (not GCJ, but for the C, C++ compiler). Alas it has not been updated for quite some time.
Hello,
I think JNod is a interesting project.
It is OS for future.
Java is slow ? I don’t think so. I have work with Java since JDK 1.1 It’s depend on your coding.Make it simple and easy to understand.
Thanks to Michael Klaus and the team.
I think James Gosling also appericiate with all of you.
Great move!!. I'll dreaming with a Javaos running tomcat, hsqldb, james and all these good java server stuff!!!
I have a cuestion that the main JNode site doesn't clear.
?Where are the java APIS that actually are implemented in JNode?
The site makes a reference to Classpath, this means that you have includes all the classpath API?.
Just another doubt.
The AWT implementation uses an API GPL licensed, and JNode is JGPL licensed. This means that isn't commerciable embedable?
GNU classpath is licenced under the GPL but the copyright holders (FSF) “give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.”
OK, that means you will be able to write commercial applications for GNU classpath (which is used by JNode).
As far as it is concerning JNode (the kernel, the VM, the JIT compiler, …), you can use it for any purpose, commercial or not commercial, but you aren’t allowed to modify it without licencing the result under the LGPL. But the LGPL allows you to link your code (maybe a driver, you wrote about embedding) with JNode. This means you are allowed to create a plugin (e.g. to provide drivers, file system support, …): http://jnode.sourceforge.net/plugins.html http://jnode.sourceforge.net/extensionpointref.html
I am very excited about this OS. What a great thing to write in such a short period of time. I was disappointed when jos.org folded. They didn’t appear to be focused enough.
Many of the comments here are amusing. I do think that performance will improve. Java might not ever be faster than C but it might get to around 90%. It’s the stuff that makes you safe and stable (GC, bounds checking, etc) that slow things down, not the language itself. I also know that the Eiffel language (which has similar features to Java) does many performance tricks and can exceed C++ performance for a fully OOP program. Also, the GUI should be fast as complexity and layering will be absent.
This OS will be great for black box kind of stuff. Delivering a turn-key solution with a J2EE server and Java SQL server would be nice. No complicated and crazy OS to have to worry about breaking on you.
IDEA: Another interesting (dead) project was Jalepeno by IBM. This was a similar concept. I think that they ONLY did JIT. They didn’t have an interpreter. If bootstrap classes could be precompiled, and all other classes be cached to disk, you could do away with the interpreter. The cache would handle MOST cases. Of course, you need to get your disk filesystem up and running first. This might simpify things without much or any cost to performance.
Good luck. Maybe I’ll contribute when I get some time.
What’s this deal about Java being a turtle? Java is fast. Not as fast as assembly, but fast. *Wonders why they use java on space shuttles, cell phones, video games, etc. if it is so slow? Also, I think this is a great idea, as long as the coders don’t f**k up, I think JNode will be one hella stable, fast, dependable operating systems. Also, JavaOS’s are old. There are many JavaOS’s already out there, like on cell phones, etc…
Looks great! I was looking for an Java OS for a long time (think jos is dead) for a Java Processor that I’m working on. Do you JNode guys think it will be possible to run it on a small system: JVM is in hw (i.e. processor), no compiler, no gui but network and only 1MB ram!
At the moment I can run a Web server on Ethernet, Slip and PPP connection below 24 kB.
Martin