Domain: jnode.org
Stories and comments across the archive that link to jnode.org.
Comments · 42
-
Re:Yeah, yeah, yeah.
These must be figments of my imagination.
All you need is ability to say something to like "val myiospace = new MMIORange(baseaddr, length)" and "myiospace[42] = x". You might get a drop in speed for bounds checking, but as the compiler/JIT compiler is aware of this MMIORange type it can safely eliminate those in most cases.
Hope your "Period." passes without further frustration.
-
What naysaying?
This was done in Java a long time ago. http://www.jnode.org/
--
Goldbox re imagined
http://goldchest.sourceforge.net/ -
Re:Talent
I don't know anything about C# but I thought Java was: http://jnode.org/
-
Re:Hey that's great
Since you sound adventurous, these guys may be able to help.
:) -
Re:My Javascript OS
It should run great on a pure Java OS http://www.jnode.org/
-
Re:"Automated"
-
You can help stop it happening!
If you are a Java developer and you are concerned that open Java will die, you can do something about it by joining one of the open source java platform projects. For example JNode: http://jnode.org/ is building a Java based operating system that runs on a bare metal PC (x86 or x86_64).
-
Re:Copying Apple
Microsoft's new OS Singularity is a research project that is testing a complete new operating system paradigm. Running all managed code, singularity is designed to be a super-stable OS
'cause nobody ever thought to create(2003) one of those (1996) before...
-
Recycling Ideas
1. Take the hard drives out and stick them in a USB Shell. Voila, instant backup/portable storage solution!
2. Take the memory chips and sell them on ebay as upgrades.
3. Rip the screens out and use them to create a Head Mounted Display in your home Virtual Reality project. (Yay for 90's thinking! ;-))
4. Unsolder the parts and use them for home hardware projects.
5. I'm running out of ideas. Maybe use the shell to stuff something geeky inside? Like a Commodore 64 Laptop?
6. Last but not least, cobble the best and/or compatible parts together to create one or two functional laptops. Load an OS in development (e.g. JNode) and use it for portable Operating System development. Alternatively, use it for an educational experience by building Linux from Scratch. -
Re:not so..
-
Re:A link to the paper
Haha, I was going to yell at you that I posted the link to the paper first (well, same time anyway), then I realized who you were
:-)
I really have just briefly glanced over it at the moment, but it looks interesting. Is there code I can download somewhere? I can't find any on your's or Chris' websites. Also, have you checked out jnode? Similar to Microsoft's singularity, but actually functional (and in java). -
Re:Oh wow!
JNode's own site mentions Singularity two and a quarter years ago. Singularity is not new.
-
*yawn*
Frankly, this is stupid.
The "vaunted" MS Research team has put out a "concept" OS that doesn't run _any_ applications, and cannot be used for any commercial purpose, and has no indications that it can be licensed. It's only claim to fame is that its an MS OS; there have been 100% managed code OSs before.
Just last month Arstechnica had an article about two similar OSs, except they are written entirely in C#, without the C++ HAL in Singularity.
Both are REAL opensource. As is jnode.
In short, who gives a flaming f**k? As usual, MS is a day late and a dollar short, which is impressive considering that the "research team" working on singularity seems to be 30-40 people. -
Re:Stability?
I looked at Singluarity a while ago, and all of the 'innovations' I saw had been in JNode years earlier. Since JNode is LGPL and actually capable of running (Java) applications, what is the attraction of Singularity?
-
Oh wow!
Managed code! Look at that! Microsoft has managed to prove...
What OSS developers already proved years ago. :-/
Actually, I'm still pretty happy about this. Regardless of whether Microsoft was first or not, they're going to manage to market the concept far better than a conglomeration of OSS developers ever could. (Sorry, guys!) If everything goes well, perhaps the public impression of managed code being "nothing but an interpreter" can finally get turned around and Computer Science can keep moving forward. :-) -
Re:Programming is different
AFAIK, nobody is writing an OS or even drivers in Java.
At least those people are:
http://jnode.org/ -
Point-in-case
Have a look at Clean (http://clean.cs.ru.nl/) for a use of pointers (internally) that makes for efficient execution. An interesting read concerning the subject is found here:
http://clean.cs.ru.nl/contents/Addison__Wesley_book/addison__wesley_book.html
Actual benchmarks to show the efficiency can be examined here (note the comparison is with C-versions of the same algorithms compiled on gcc):
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=clean&lang2=gcc
Here's Java 6 (server version) for comparison:
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=java&lang2=gcc
You'll notice that differences are mainly in the memory footprint, already known to be attributable to the large number of libraries (classes) loaded into the vm at start-up, something the Clean runtime isn't quite as encumbered with:
(Java) http://java.sun.com/docs/books/performance/1st_edition/html/JPRAMFootprint.fm.html
So, the difference in speed is often-times negligible, and it's been shown that the memory footprint can be reduced to a size where you can run an embedded jvm in a mobile phone (really!), and rumour has it that someone even wrote an operating system in Java, but the memory footprint still seems the biggest culprit:
http://www.jnode.org/node/573
In other words, it's not Java - the language, but Java - the massive OO-framework, and JVM - the specific implementation, that's the problem. Even C++ or C with an OO-framework can be made into a large memory footprint, if you can believe it:
http://www.microsoft.com/windows/products/windowsvista/editions/systemrequirements.mspx
Then, of course, memory is cheap:
http://www.simmtester.com/page/memory/memprice.asp
But, the over-use of which, sometimes stays with us as itching bugs for too long:
http://blog.wired.com/monkeybites/2007/11/firefox-3-add-o.html
If memory serves me right (http://www.google.com), there's something to be said of the virtues of garbage-collection applied to systems programming:
http://www.digitalmars.com/d/
and the actual (memory and) time efficiency of such an attempt:
http://shootout.alioth.debian.org/gp4/d.php
But I could be wrong. After all, no-one in their right mind would ever attempt to write an operating system in something like, say, Lisp:
http://cbbrowne.com/info/lisposes.html
- let alone design an actual computer around it:
http://en.wikipedia.org/wiki/Lisp_machine
It simply wouldn't run. No, the skills of an engineer depend solely on the language he/she speaks, not on the abstract concepts he/she masters, applied to whatever tool he/she chooses to use/create.
That is why I propose we all forget about abstraction all-together, and revert to coding like this:
010101100001111010110101101101111101111...
But wait, that is itself an abstraction - Turing must have suffered from premature abstraculation. No, let's hear it for using copperwires instead of silicon, so we can attach some large, hand- -
Re:Java Programmers == TypistsYou fail it.
That is, Compile it's own Compiler.
Failure #1: Java's compiler is written in Java. The first use of the early Oak/Java VM was to get the compiler self-compiling.To Me, a Programming Language is 'Real' When it can fully bootstrap itself.
Failure #2: Java *can* bootstrap itself just fine, thank you very much.
http://www.jnode.org/
http://jikesrvm.org/
"A distinguishing characteristic of Jikes RVM is that it is implemented in the Java(TM) programming language and is self-hosted i.e., its Java code runs on itself without requiring a second virtual machine."being an interpreted language, fails that test miserably.
Failure #3: You called Java an interpreted language. Java is a compiled language that runs on a virtual machine. Like most VM-based platforms, that provides two options. The first is to interpret the bytecodes directly. The second is to compile the bytecodes into native code at runtime using a Just In Time Compiler. The most common JIT compiler for Java is the HotSpot VM. HotSpot is quite capable of keeping pace with and even exceeding the performance of native code.
http://www.idiom.com/~zilla/Computer/javaCbenchmar k.htmlI've once seen a student project, a java interpreter, written in Java.
Failure #4: You see these things, yet you fail to take the time to understand them. You have failed as a geek. Turn in your member card immediately and leave in shame. -
Re:Original AusCERT
How you'd launch the Java-based JVM is not clear
JNode does exactly that by using the JVM's JIT to pre-compile the JVM. A bit strange, but it works.
In any case, that's not the point. When you're building something like a virtual machine, you usually want as small of a cross-section for exposure to native code as possible. ImageIO routines have been done in pure Java many, many, many times over. JIMI, for example, was written by Javalobby's founder Rick Ross and sold to Sun. Rather than extending it to meet their needs, Sun ignored their purchase (Lord only knows why) and linked in a native library for loading images.
So yeah, this really is a snafu on Sun's part. -
JNode btw already does this!!
JNode (Java New Operating System Design Effort) is an operating system
coded in 99% Java and for the bare metal stuff 1% of it is assembler.
It's VM and the jit too are coded in java.
So yes 95% of JNode is portable but of course if you want to get it to
run on another platform you would at a minimum have to look at the
low level assembly stuff and of course the jit compiler.
Check it out at http://www.jnode.org/ -
Re:Oh no! Don't do it!Good grief. The whole lot of you need a good whack upside the head to straighten you out.
- XUL is not that slow. I don't know where you get this idea, but it's performance is more than acceptable for pretty much any GUI you might make. I don't recommend writing a video game in it, but that should go without saying.
- ECMAScript/Javascript *is* slow. However, it's also just glue code. The time it takes to shunt a button press from the Javascript system to underlying C/C++ code is negligable.
- Despite the slowness of Javascript due to interpretation (which is a feature, not a bug), it's more than fast enough to run a lot of applications. The FireFox GUI, for example, is a Javascript application sitting on top of the XUL/XPCOM system. Yet no one complains that their button presses are too slow.
- Java is definitely NOT slow. I'm not going to open this can of worms again (you can search my 5,000 other posts on the topic), but I am going to point out that your example is so much FUD. JavaOS didn't fail because of its GUI, it failed because it wasn't a very good system. In fact, it wasn't actually a full desktop system. More of a rich client type of thing. Which is why the JNode folks are working on a fully modern OS written in 100% Java. Including the kernel and drivers.
- XUL is not that slow. I don't know where you get this idea, but it's performance is more than acceptable for pretty much any GUI you might make. I don't recommend writing a video game in it, but that should go without saying.
-
Re: The VM
Well PCI hardware [for instance] is not part of the C standard either. But if I read a BAR and get 0x1337BABE as the base address of some register, I can plomp that down into a pointer and use it
Yeah, you happen to be able to do that with most compilers on i386, PPC and SPARC, but there's absolutely no guarantee that you can on any CPU, nor with any compiler. As such things invoke undefined behavior according to the standard, you may just as well get a bus exception, hard freeze or even a compile error when you try such things on an arbitrary architecture. Consider, for example, a CPU where loading an address register is a privileged operation, or an architecture with seperate I/O and memory busses, or an architecture with seperate byte and word address spaces. Although I'm not experienced enough to quote specific examples, I'm not making these examples up. You can browse through the comp.lang.c FAQ to find other amusing architectures.You can't do that in Java. At least, not without resorting to JNI hacks. And if you're going to drop down to JNI to do all the nitty-gritty work, you might as well stay there.
As long as you're using the term "Java" to refer to "The Java Language Specification" from Sun, then you should also use the term "C" to refer to the ISO C99 standard, in which case you cannot do it in C either, as described above. At least, not without resorting to assembly hacks. And if you're going to drop to to assembly to do all the nitty-gritty work, you might as well stay there, no?Just as well as Intel's CC, GCC and MSVC are able to extend C as to be able to do "char *p = (char *)0xbabecafe;", I don't see the problem extending the Java language to be able to do "byte[] p = System.createBytePointer(0xbabecafe, length);".
Building a desktop on top of Java, that kinda makes sense. A kernel? No way.
Again, did you ever look at JNode. It might be interesting, considering that they've, well, done that.Of course, I might well agree that it doesn't make sense to write a kernel in Java -- believe me, you will have trouble finding a more stern opponent to Java as a language than me. It is definitely possible, though. The only difference between doing it in C vs. in Java, is that doing it in C requires less assembly programming.
-
Doesn't matter how good a C programmer you are
There will be buffer overflows. The solution is to not use C for handling data from over the network. Use a language that has memory safety. I think JNode is on the right track. They have a small amount of code (assembly in this case) for running the virtual machine, and everything else is done in Java. Java has no memory access. Buffer overflows of a certain kind can exist but the standard buffer overflow exploit is nearly impossible.
I know, those who don't understand what I'm talking about will leap in and say, "Java has to run in a JVM and what language is the JVM written in? Ha! It's in C (or assembler) so it can still have buffer overflows!" This is so naive. First, the JVM runs Java code, which has no memory access. It does not run untrusted code handed to it over the net. Second, and most important, it is a very small piece of code with a rigorous definition of what it should do. It's possible to verify a small, rarely-changing bit of C code with a rigorous specification. It's not really possible to verify correctness of a huge constantly-changing C codebase, like the OpenBSD kernel and system utilities.
Anyway, trying to have a huge secure codebase in C is an exercise in futility, as OpenBSD has shown. Relative to other operating systems, OpenBSD is small and feature-poor. And their dev team must be among the best in the world for eliminating these types of bugs. And yet they still get bitten by them. -
Re:Because the ones we have suck?
"Java is a bit nicer than C++ but it just can't perform at the level of C (how many OS'es are written in Java?)"
http://www.jnode.org/
http://en.wikipedia.org/wiki/JavaOS
http://lejos.sourceforge.net/
I admit, JavaOS is dead and lejos is for Lego bricks, so that leaves jnode.org. Note that there are already many OS's out there, and end-users typically don't care what kind of language the OS is written in. Most bricks of operating systems are found in C/C++ libraries, with nice GNU or BSD licenses. -
Re:Free Systems
don't forget jnode
-
Done.
http://jnode.org/
Regards,
Steve -
Java is already fragmented
Java is already fragmented. The result of open sourcing Java will actually be consolidation, i.e. killing of competing VMs. And a huge open source test suite will greatly benefit all surviving JVMs, which is a good thing.
How can you not see this?
Javas problem is not that it might get fragmented, the problem is that it IS fragmented. Do something about it! Let Java free! -
Alternative: write the OS in JavaSeriously. Maybe not Java itself, but a kind of system level version of Java. Andy Tanenbaum says:
Once you have decided to have each module keep its grubby little paws off other modules' data structures, the next logical step is to put each one in a different address space to have the MMU hardware enforce this rule.
You only need to do this if you're writing both kernel and application code in a language like C that allows arbitrary access to the entire address space. But imagine if everything was written in something like Java that doesn't have pointers. You might not even need a "kernel" as such, everything could run in supervisor mode - the protection would be provided by the language, not by MMU hardware.
In case you think this is all pie in the sky, check out JNode which is an OS written in Java.
-
Re:What software amazes me?
Java is too slow for OS today imo... Its performance being interpreted is why... you may wish to look up SINGULARITY by Microsoft
Good God. You're an idiot and a Microsoft fanboi. Is there anything worse?
Still, are drivers doable in java?
Lemme see. If you write an operating system in Java, it just might come with device drivers. Maybe? You think? But you go right on thinking that device drivers can't be written in Java. Moron.
Try pulling your head out of Visual Studio's ass long enough to learn a thing or two about other Operating Systems and Execution Environments. Then you might actually be able to register a nick around here without getting tagged as a know-nothing Microsoft-lover. -
Re:What software amazes me?
Fuck the drivers. Build your goddamned operating system in it!
-
Re:Time to let C die ?
JNode is one example of an entire OS which is written in pure Java but for a nano-kernel written in assembly (similar to the assembly code in Linux kernels which is required for setting up the processor before switching to C code and also for some basic libraries such as for outputting to ports). JNode includes a TCP/IP stack and device drivers.
Eclipse's Java compiler and Sun's J2SE compiler already are written in Java.
So it's not impossible. It's even better in many ways to write compilers or large device drivers such as SCSI subsystems and IP based protocols in Java, especially where there's complexity and large amounts of code which can be helped by object orientation.
C certainly has its uses where you want a high level system programming language for small to medium sized projects. But it is certainly over-used in many applications. -
Re:Built on a new language?
There is an operating system written in java. JNode.
Regards,
Steve -
Re:Robomaid
Most definitely, http://www.jnode.org/
-
Re:BULLONEY!!Uh-huh... Now do the same thing without needing a special, stripped-down, nearly featureless JRE. I don't need a special build of GCC to satisfy the condition, why did we shift from apples to oranges to make it possible in the Java world?
Because, Java has had a special purpose since its inception - to be cross-platform without code changes. The Java Runtime Environment is something like an Operating System - more accurately, an Operating Environment that can run on multiple Operating Systems. Or, it can be an Operating System on its own if implemented that way.
C is executed by the Operating System. Java is executed by the JRE - Operating Environment. GCC is a compiler. JRE is a byte-code interpreter. Now who's talking apples and oranges?
A more accurate comparison would be running a C program under an Operating System (mostly written in C) and a Java programming running under an Operating System/Environment (mostly written in C or in Java). I wouldn't know the purpose for it... but, it would've been apples to apples. GCC != JRE.
The next stipulation you'll demand is that Java should operate without hardware.
= 9J =
-
Re:Browser shmouser
Except of course that java is completely insuitable for writing an operating system in,
Really? What makes you say that?
Java works just fine for Operating Systems, just like LISP did before it. It's just that the idea of *needing* assembly/C for OSes is so ingrained that people can't get over it.
running an OS written in java we would need the average machine from five to ten years from now
Bull. In fact, Java OSes have the potential to be *faster* than today's OSes. Why? Because no hardware protection is needed from code. It's all handled in the memory model, making it impossible for GPF/segfaults to occur.
What we should be focusing on is improving the security of native code execution through mecahnisms such as pro-police, systrace, chroot/jails, improvements in memory guards for instance see the recent changes to openbsd for the way it should be done.
Dead. End. Until you can absolutely control the code, someone will always find a way out of your little cage.
No its not hyperbole, look at eclipse it needs (with the jvm) 450MB of ram and is miserably slow to work with, all of other software running on my machine at the same time has a smaller footprint and is much more responsive.
It is hyperbole. Eclipse is a development environment, not a regular desktop app. Comparing footprints there is just silly. I can find you plenty of "native" development environments with very similar footprints.
What needs to happen is the realization that software development cannot be undertaken by the lowest common denomitator, bridge design isn't, java, C#, are not a panacea, they are a bandage for a social problem not a technical one.
As long as you trust the programmer instead of a system that makes the problem impossible, you WILL have security holes. Not because the programmer is lazy (though that doesn't help), but because he's human and makes mistakes. -
Re:Unix is not the Future
That's not a problem with managed code, that's a problem with the APIs offered by the managed code. There's nothing stopping a managed code environment from allowing you low-level control.
For example, JNode is a complete OS written in Java. It's still Work In Progress, but I'd imagine that you would have no trouble writing a simple text driver for your printer.
Don't confuse what you're currently allowed to do with what is possible. :-) -
"Security software" is an oxymoronYou get security by having a secure design. If you need to kludge on some software to take the existing non-secure design and patch it up, that proves that the resulting system is also not going to be secure.
Linux is somewhat ahead in this in that protected memory is part of its "DNA", unlike Windows which ultimately comes from the culture of DOS, which has no protected memory and is not multi-user.
But still, Linux is only just a little bit better. We need to move to real secure designs such as:
-
In many ways, both Linux and BSD suckIt is rather sad that all of today's widely used operating systems (Windows, Linux, BSD, OSX) are essentially beefed-up descendants of an operating system first developed in the 70s - surely the time has come to move beyond these outdated metaphors? Where is the open source project to create the next generation operating system?
Sure, there are interesting efforts such as JNode, and people working on really cool new concepts like Zero-Install and Hans Reiser's vision of tomorrow's filesystem, but who is working to combine these and other concepts into something truly new and innovative?
-
Re:Good news for PHP...
Why hate java? For web applications you can't get much more scalable then java. I'm a java/python/C++/C/perl hacker and they all have benefits. The right tool for the right job. Java has to be doing something right, afterall how many corporations don't rely heavily upon it? Developing for java is actually a pleasure since amazing IDE's like Eclipse and NetBeans have been released. Theses IDE's have extensive support for everything from desktop programs with gui builders, web applications with integration to tomcat, to mobile device developement with cell phone emulators and the works. Hell, java can even be used for OS developement (jNode ) once you get the assembly stub out of the way. With today's VMs I often find java is faster or on par with C++. It really is a nice language.
Regards,
Steve -
Re:Well...
Just input from one of the people behind JNode. JNode can be found at http://www.jnode.org/ and is a OS mostly written in java. There is small parts in assembly, but this is very low level. Device drivers are written in java.
-
Re:Go write me an OS in Java
Here. I guess java is a cool language after all. BTW, the OS I just linked to is pure java with a little assembly stub that loads just enough to get a JVM running, from that paoint on its pure java. I love java, I also like C++, but I have yet to find a language that is comparable to java. If for nothing else, it is indispensable because of its amazing APIs, ease of use, amazing IDEs, speed (with the 1.5 VM from Sun, you can only achieve similar performance hand coding the app in assembly - look into hotspot, its on the fly optimizations at the lowest level), portability, and deployability (google for WebStart). Any real programmer understands the value of Java, we are just too busy being productive to convince the
/. groupthink otherwise.
Regards,
Steve -
Re:New windowing system from scratch?
I suggest you start here. The JNode guys are working on a completely new OS and need someone to design them a windowing system. If you feel you've got the expertise and direction, go kick out some code.