Sun Backs Ruby by Hiring Main JRuby Developers
pate writes "Sun has thrown some corporate weight behind Ruby, Rails, and dynamic languages by hiring the two main JRuby developers, Charles Nutter and Thomas Enebo. Charles posted about jruby stepping into Sun on his blog, and Thomas posted his take too. Tim Bray, who started the ball rolling posted about the JRuby Love."
This is great news for several reasons.
.NET.
First, and most importantly, because Sun is now throwing its weight behind Ruby, which is a wonderful language. It does have its quirks (some weird syntax and the schizophrenia between procs and blocks), but it's still one of the better languages out there. Easy to write and understand, powerful, and succinct.
Secondly, because Sun is supporting JRuby, which is an alternate implementation of the language. This will put pressure on the language designers to spell out the language in a clear specification, rather than referring to some implementation for knowledge of how things work. One of the benefits of this is that it will cause features to be thought and debated about more, which I believe results in cleaner, nicer languages.
Thirdly, because the JRuby folks seem to have the plan to develop a compiler. This could lead to Ruby's run-time performance increasing enormously, widening the scope of the language to tasks that current Ruby implementations are simply too slow for (you can extend Ruby programs in C and JRuby programs in Java, but it would be preferable if one didn't need to).
Fourthly, because there is just a slight chance that Sun will decide to make the JVM more flexible and amenable to languages other than Java. Right now, the operations that the JVM supports are very much tied to the features of Java. Implementing some more flexible primitives would benefit not only JRuby, but also about any other language that targets the JVM, and make the Java platform more competitive with
Please correct me if I got my facts wrong.
Long ago, Microsoft hired Jython creator Jim Hugunin to work on IronPython. The aim is to make dynamic languages like python work better in .NET platform. Looks like Sun doesn't want to lose out in the race in supporting dynamic languages.
Lua is interesting, it runs on it's own register based VM and LuaJIT does exactly what you think. Lua is only a small language and generally faster than C-ruby and C-python. I don't see anybody rushing to port this to run on the JVM/CLR, is this because the performance and memory use would absolutely suck?
Sun has thrown some corporate weight behind Ruby
Good thing, because that Oswald guy was starting to get on my nerves.
Push Button, Receive Bacon
Currently JRuby is licensed under the GPL.
Given Sun's past criticism, I think it's fair to ask whether they have committed to using the GPL for future JRuby releases.
Reduce, reuse, cycle
``Java is a marketing driven answer to a non existant technical problem,''
To be fair, Java does have some advantages over C and C++ for application development, and I think that Java has worked wonders in the corporate world.
``the best move would have been replacing Java with Ruby,''
Not necessarily. Java and Ruby have different strengths. For example, Java has static typing, which helps catch errors at compile time.
``Now, if and when some good Ruby software will be written by these folks which will rely on a JVM to be run''
Not necessarily. Just because Sun supports JRuby doesn't mean CRuby is going to disappear.
``Think about what Azureus would be if it was written in a decent programming language.''
You can't very much blame the state of Azureus on Sun. It was, after all, the Azureus developers who made it the way it is, through language choices and programming practices.
Please correct me if I got my facts wrong.
Can Sun claim to be backing dynamic languages when people like David Ungar are looking for a new employment? http://tech.groups.yahoo.com/group/self-interest/m essage/1943
Maybe they're too "old-school", but hey, those guys created Self!
>To be fair, Java does have some advantages over C and C++ for application development,
Apart from supposed portability I can't think of any. And that portability is overrated
anyway since how often do companies mix and match Windows with X terminals with java stations
to run a front end GUI, and how often does something think that a huge 1 million line
backend mainframe program would be so much better if it could run on a cheap PC too?
``Apart from supposed portability I can't think of any.''
I don't think portability is the real advantage. I even doubt if Java really is more portable. No, the real advantages are safety and garbage collection. C and C++ programs are rife with format strings, unchecked return values, unchecked casts, unsafe I/O primitives, and manual memory allocation. All of these are rich sources of bugs. Buffer overflows are in the top three of most common vulnerability types (probably first after injection vulnerabilities, which Java's SQL API protects against, too). Memory leaks are also common, e.g. Firefox suffers badly from them. Unchecked return values have been responsible for some major privilege elevation vulnerabilities in Linux. All of these can't happen in Java, or at least, Java greatly reduces the risks.
Please correct me if I got my facts wrong.
Java has garbage collection and is a simpler language than C++. The Java library is huge, but the actual language doesn't have nearly as many things that will bite you in the ass as C++ does. So it's easier to learn and harder to shoot yourself in the foot. I must not be as smart as the C++ fans, cause I prefer having a language like that for most of my development. I find that I can get things done in Java faster just because I spend less time catching bugs. My favorite's language is actually Ruby these days, but that's still impractical for a lot of things I like to do.
:-P And while Java's not simpler than C, it is still safer.
I rather like C. For kernel hacking, I can't imagine using anything else. But I haven't done kernel hacking in five years -- it's just not something that comes up in my life these days.
Another big advantage is the fact that java identifiers (variable/procedure/class/etc. names) actually make sense. Sure, it's verbose, but syntax completion and a decent resolution on your monitor practically negate that problem. The added clarity more than makes up for it.
Disclaimer: YMMV, and yes, I do know that you can use verbose identifiers in C/C++. That doesn't help much if nobody else does so.
Think harder.
I /whatnot ops?
How about a bazillion prewritten, documented, tested, standardized, open source library modules, many of them supplied by Sun with the language, to do bigmath/network/file/database/sql/2D-3Dgraphic/GU
Tell you what, you roll anything trickier than "hello world" from scratch in C/C++, and I'll do the same in Java, and we'll see who has the choice of more predefined stuff to use, and who finishes faster with a program that runs more correctly.
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
-- ac at home
So do many other languages. The main reason why Java worked wonders in the corporate world is marketting. Basically, Java is a victory of marketting over engineering.
Doesn't have near enough to be truely useful, and the explicit typing (lack of type inference) make it extremely verbose and annoying to work with. Much more than statically typed languages with type inference and extremely strong type systems (à la Haskell) for example.
"The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
You should try the D Programming Language (from Digital Mars). It's much cleaner than Java, and faster. Has all the advantages of java (but the number of third-party packages I guess) with pretty much none of the inconvenients.
Give it a try between two Ruby sessions ;)
"The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
Back in 1994, Sun hired the core developer behind Tcl/Tk, and asked him to form a team around the language / graphical toolkit. The toolkit was very widely used and quite promising (for the time), but it languished at Sun and eventually they dumped it.
Rich.
libguestfs - tools for accessing and modifying virtual machine disk images
- You can't very much blame the state of Azureus on Sun. It was, after all, the Azureus developers who made it the way it is, through language choices and programming practices.
:-) to make a choice without regard of the inner working of their code, its requirements and the weight it will impose on the system or other applications being run on it. The infamous saying "Nobody was ever fired for choosing Microsoft" could be abused here as well.
Yes, of course. My point is that the corporate backing behind Java could push relatively new programmers (for example those who never had to play with an accumulator register, or align manually data to even addresses in a M68K asm code, or those who know the difference between C89 and C99 - Ok, now you know I'm 40+
About Azureus, the point is that almost all if not all its weaknesses are due to the choice of Java as its language of choice. This should ring a bell.
Just to clarify my take on Java. I'm not against it as a language, the 10% I know about it says that it's well designed, powerful and pretty straightforward to learn, but I can't accept being forced to run most software under a vitual machine which makes it slower by orders of magnitude.
Using a JVM because it allows a financial application to be hidden within security layer is also a myth: one could as well hack a Z80 or 6502 emulator to do the same (no networking, no access to local files, no way to bypass the parent calling process permissions, etc. everything is already there) in much much much less cpu cycles.
I can barely understand corporate choices like "being delivered on schedule" or "instead of 2 good programmers it can be done by 10 monkeys, and they still cost us less", but for Open Source and community driven projects Java should never be considered. Let alone that if Sun goes bust (or decides to kill the platform) your project is esentially doomed. Both are very unlikely scenarios, but not impossible.
It would be nice if Sun hired the Jython team as well. :) Consider that they would then have two very popular scripting languages nicely supported under their portfolio.
.NET seriously enough.
I just don't think they are taking
I'm all for debate, but does that really create cleaner languages? Is c++ cleaner now that a panel decide what goes into it (I'm thinking of the STL here)? I kind of like the model of one guy with a neat idea, trying to produce a language that works the way he wants it to.
FWIW, I completely agree with you. I just wanted to defend Java for once. ;-)
Please correct me if I got my facts wrong.
)and who finishes faster with a program that runs more correctly.
That program -and its jvm- will however run almost everywhere under a C++ + C operating, system under a C+asm kernel, and often will call functions contained in C or C++ libraries for speed reasons. This is a chain where one link can break all the others. If your Java program still runs fine it's because even software written with other languages can (as it did for decades).
People started speculating , this might be in response of Microsoft throwing weight behind Python, though I am not in that camp....but it would be interesting to see that how these interpreted languages will perform when hijacked by these JIT compilers( or whatever these sun guys tell you about their shiny bytecode stuff.)
I have seen JRuby code and the effort to use Java libraries from Ruby and it was plain scary, I would rather do pure Java. And support for rails is "miles before you and me can do some real code". According to Tom(one of the authors of Jruby):
"It should be stated clearly here, that the JRuby this is running on is not released code yet. In fact, our next release 0.9.0 will not quite be running this application out of the box"
So, we have a tight case there. Besides Matz is also working on Ruby2.0, which will have VM execution kind of stuff. So, though you may celebrate if you want, I would rather like to have C Ruby for my breakfast. There are two major problems of Ruby:
1. Slow (yes its slow and stylish)
2. GUI programming
And guess, what Jruby is not going to bring anything better on the table on these two fronts. With Introduction of IronPython, you can do GUI programming on Windows happily and PyGtk was there as shining example of one of the finest GTK bindings ever produced. Whereas, if you want to do, GUI programming with Ruby, how many REALLY good choices do we have? Though this might be humble opinion, but I have hated GTK for gui stuff, it sucks. Qt and Windows Forms are much better. Java applets suck even more.
AFAIK Ruby is garbage-collected. So why does it have to run on Java?
Also, I doubt Sun makes a big commitment to Ruby, as they already have Groovy for the same purpose (Java-suited dynamic language).
You can go right ahead and flame me now.
There seems to be an ongoing effort to make ruby run well on the .NET-framework aswell, check out IronRuby or Ruby.NET for further reading. Ruby.NET supposedly runs on Mono although it requires a few patches.
I gots no love for Sun ... after all Jython been out for half a decade, and Sun has shown little to no interest in it ... just imagine how much better it would be if they had the foresight to support it and improve its performance
As far as I'm concenrned Sun is playing catch-up with Microsoft, and this is no more than a half assed response to MS releasing IronPython
Does anyone know for sure where/how/why JSP is going to fit in all of this?
I pick a 3d shooter. Now you get to pick anything less yawn inspiring than a database driven office app right? This is a fun game. ;)
Seriously though, each language has applications that it's well or badly suited for. Each moderatly proficient software developer should be able to pick the right tools for the job and be able to use them. No need to start holy wars over them.
for Open Source and community driven projects Java should never be considered.
Open Source folks will generally write in a language they're familiar with. For a lot of people, that's Java. I agree with you that the JVM is unnecessary complication in most situations, but the language itself is nice, with a large, cohesive, well-documented class library. Purely on a language basis, I prefer Java to C/C++. A lot of the time when I'm developing something for myself, I'm doing it more for the chance to muck around than to get a lean, mean, performing machine. But the Azureus folks probably wanted to fool around and see what they could to with the bittorrent protocol, and because they knew java, that's what they used. In that scenarior, efficiency and performance were never goals, so they were never factored in to the choice of language.
Let alone that if Sun goes bust (or decides to kill the platform) your project is esentially doomed. Both are very unlikely scenarios, but not impossible.
Nah. Even if development on Java was totally halted, existing Java programs would run fine. Even if distribution of Sun's JVM was halted, it's installed on many computers already (and I believe it's licence allows it to be redistributed with your program?). Even if Sun goes belly-up, there's no reason for Java to die.
Just because you're paranoid doesn't mean there isn't an invisible demon about to eat your face
... if only someone would throw some money my way to work on Hecl (http://www.hecl.org/) :-)
http://www.welton.it/davidw/
"it will cause features to be thought and debated about more, which I believe results in cleaner, nicer languages"
I can see where this will lend to: a convoluted syntax more close to Java and less of the conciseness of Smalltalk and Perl...
I don't feel like it...
I very much doubt that. It's languages like Perl, PHP, Ruby, and Python that have the odd features that cause massive problems when the language grows out of its initial niche and starts being applied to large, Real World problems. Many of these languages have little hacks that seemed advantageous when originally conceived, but later turned against them. Java has comparatively few of these issues (no list context vs. scalar context, scopes that don't nest, unpredictable syntax, etc.) - its main problem is that it's extremely verbose and repetitive.
Please correct me if I got my facts wrong.
Damn, where are my mod points?
You're absolutely right. Java and C++ are different tools, with different strengths and weaknesses. Attempting to compare them like-for-like is meaningless, as is making general statments about which language is "better".
If you want to do serious mathematical modelling, for example, you have a pretty limited selection of languages available. Most of them start with "C". Most of the others start with "M" and are written in languages starting with "C".
On the other hand, for CGI, most of the languages I use start with "P". I wouldn't dream of trying to write a database-backed web-page generator in C++, because I could have written the whole thing in Perl or PHP by the time I'd worked out how to link in the right libraries for C++.
Java seems to have found the (rather large) niche of developing back-end, "business" applications (i.e., database apps). Again, I probably wouldn't choose to use C++ there, since Java already has loads of pre-supplied functionality, and perhaps as importantly, a whole community of developers with experience in the field.
As the parent says, it's all about picking the right tool for the job. Most of us have succumbed to language holy wars in the past, and hopefully most of us have since outgrown them.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
This is a bit off topic but maybe in line with the current thread. There is a SmallTalk/C derivative (at least heavily influence by SmallTalk and built on top of C). The Cocoa Frameworks using Objective C are gaining a bit of traction, even if it is only used for the niche Apple Macintosh market.
So, we have a tight case there. Besides Matz is also working on Ruby2.0, which will have VM execution kind of stuff. So, though you may celebrate if you want, I would rather like to have C Ruby for my breakfast. There are two major problems of Ruby:
1. Slow (yes its slow and stylish)
2. GUI programming
And guess, what Jruby is not going to bring anything better on the table on these two fronts.
I disagree -- there are more problems with Ruby than just those, and they are things Jruby could fix.
The big problems are:
--Slow: unlikely to be completely fixed by using a JVM, but it would probably help. Matz's VM was going to be ready Real Soon Now in about the year 2000.
--Unicode: The JVM would FINALLY give Ruby the ability to take in text in various languages and just process it in the normal way, rather than messing with individual bytes and having Japanese be a special case.
--Threads: The JVM would FINALLY give Ruby proper threads.
And another problem is:
--Project Management: Involvement from Sun might make for a more efficiently run, less 'hobby like' project.
So, I'd say there's a lot Sun could offer to Ruby. Whether any of it will happen I don't know -- and of course bad Ruby code is a lot worse than bad Java code and I'm not sure if I wouldn't rather people stuck with Java.
Whence? Hence. Whither? Thither.
but the number of third-party packages I guess
.NET
And thus you illustrate why it's not successful. Let's pick a quick list of very successful languages:
Python
Perl
Ruby
Java
You know what this list has in common? An extremely powerful set of standard libraries. Hell, the whole reason I enjoy working with Perl and Java is because of the very rich set of APIs made immediately available to me (and in the case of Perl, this extends to CPAN, which is ridiculous in it's breadth).
APIs are the key. Without them, no developer will bother. As a contrasting example, despite the fact that I love the concepts in Lisp, I've never embarked on a major project in it because I'm invariably forced to roll my own <insert library here>. The same is true of Objective-C (unless you're on a Mac), Smalltalk, and I'm sure many *many* others.
Ruby on Rails has got a lot of attention. Many web sites that would have been built using Java are being built using Rails, and people were starting to ask if Ruby on Rails was the new, better Java.
This is an insurance policy for Sun, and a way for them to provide a migration path and say "Oh, OK, you can run your Rails site on our Java platform while you build the next version using J2EE".
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
Standard Libraries are first-party packages, I was talking about third-party packages. D has a fairly good stdlib (less extensive than Python's or Java's, but pretty much at Ruby's level, and with a documentation that doesn't quite suck as much).
"The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
So, the creator of a proprietary platform acquires key developers of open source add-on for that platform. This likely means that Sun will add more Sun Java-specific features to JRuby and that JRuby will not work on IKVM or Classpath in the future.
I wonder whether Sun tried acquiring Jython first and was turned away...
"No, the real advantages are safety and garbage collection"
Only an advantage in some areas. If you're writing a low level
caching algorithm such as for an RDBMS server or file system
driver you don't want the runtime deciding when to flush the
memory , you want to do it when you think its most efficient.
Java is an application programming language , its not for
low level code where you have to know what you're doing and
thats where C/C++ comes into its own.
Sorry to play the cynic, but you have to ask how long this goodwill will last. Sun has a layoff announcement every 6 months it seems. "Non-core" business units are shut down at every turn.
I love Sun, and I think it's great that they're doing this. I hope they prove me wrong.
Actually I'd say Fortran90 is probably a better language for serious numerical computing than the languages you described: it handles array computations natively and parallelizes well.
Ruby, and it's raison d'etre Rails, are so open and free of comittee-paralysis that the thought of having it over-engineered, -documented, and -planned, gives me the heebeejeebees. The lang is supposed to be the common sense anwer to what went wrong with Java. Sun has a widely used and distributed, wreck of a language system and they should keep their mitts off of the next generation of tools.
If it were done when 'tis done, then t'were well it were done quickly... MacBeth
Hmmm... touche. ;) Well, the point still stands, I think. The availability of third party packages is, IMHO, nearly as critical. All those languages, as well as C and C++, have a rich set of third party libraries available. And going back to Lisp and Smalltalk, clearly this isn't the case (even worse, there isn't even a standard library framework for those languages).
Except that (C)Ruby works, is stable, is actually used (more than Jython I mean, which is used quite a lot), and is not designed by taking everything that looks shiny and shoehorning it in a stupid language.
"The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
Indeed, Fortran is one of the few other languages that's in the game. Whether it's still ahead of C++ on raw performance grounds is a bit of a moot point these days. Some class and template wizardry in C++ libraries now means heavily optimised data structures and basic algorithms are available, which negates a lot of Fortran's native array advantage. Also, things like the F2C conversion library now allow important Fortran-based libraries like BLAS and LAPACK to be built natively on C++ with all the optimised algorithms still available. I expect Fortran still has a significant edge on highly parallel architectures, where C++ isn't exactly geared up for powerful optimisations, but for anything more desktop-based, it's probably much closer.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
You know, the fact that you can use C libraries in C++ programs does not mean you should do it. The real C++ library (STL) is extremely clear, without any unneeded verbosity.
I can't think of anything clearer than map or list (examples that apply to java, also), or:
for_each(l.begin(), l.end(), _1.print());
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
I've never heard of JRuby before this. However, according to the Wikipedia entry, it allows you to run Ruby code within Java. Cool. Further down, it says you can also run Java code within Ruby within Java.
Whoa.
So, can you run Ruby code within Java within Ruby within Java? What about running Java code within Ruby within Java within Ruby within Java?
My head hurts...
Java is an OPEN platform, based on well established standarts that are made public, royality-free. Everyone is free to make their own implementation of the JavaVM, this commitment to open standarts made efforts like IKVM, Kaffe, Classpath and ohters possible on the first place.
That's a bunch of lies.
Sun's Java specifications are available only under restrictive licenses and Sun has withdrawn them from standards bodies twice because Sun was unwilling to allow independent implementations. Go try to download the J2SE specifications from Sun's web site and look at the licenses they come under.
IKVM, Kaffe, Classpath, and others have been laboriously reverse engineered from third party sources, and Sun has to this day refused to help in their creation. Sun's sources are completely useless to anybody working on independent Java implementations, because if they so much as look at them, Sun claims ownership of their work.
Sun's lack of openness has cost a lot of people a lot of time and effort. Claiming that they are implementations of some "open" Java standard is adding insult to injury.
fast as Java
Enough said... ;-)
instead of speculating? Here's Tim Bray's blog post about hiring them here and a follow up here.
from Tim's blog:
He answers more questions on his blog.
Sun is back to hiring!
If you're a Java developer, check out Groovy and Grails. It integrates much more tightly with existing Java code rather than redoing everything in Ruby.
See also this post: http://www.infoq.com/news/jruby-groovy-next
how to invest, a novice's guide
Ok, what are the weaknesses of Azureus? The main one I see is performance...
Java could, in theory, perform very well. In theory, it could perform faster than C. Remember, a VM does not necessarily mean slower, and there is something to be said for the portability -- Java was supposed to be AJAX, 10 years earlier.
Don't thank God, thank a doctor!
Suppose you want to find the last names of people in your address book who might be Vulcans, and produce a list ordered by the length of their name (five character names, then four and six character names, then the rest, alphabetized within length groups
address_book. /.*k$/ }.
collect { |person| person.last_name }.
find_all { |name| (3..8).include? name.length and name =~
sort_by {|name| [[2 2 2 2 1 0 1 2 2][name.length],name] }
I'm not sure, but I think this would be harder in C#.
--MarkusQ
In theory. It crawls on old hardware. It doesn't feel "snappy" due to the slow class load time and initial JIT compile. Developers jump through hoops putting in lazy loading and splash screens to timewarp away the slowness.
But it could be pretty awesome if there was the ability to save/load a cache of all the loaded classes and JIT compiled code from a running JVM. With this initial class load times/JIT times can be dodged. Is that doable?
``Yes, of course. My point is that the corporate backing behind Java could push relatively new programmers (for example those who never had to play with an accumulator register, or align manually data to even addresses in a M68K asm code, or those who know the difference between C89 and C99 - Ok, now you know I'm 40+ :-)''
;-)
Hey, I'm 40+ too, but I'm only 24 years old!
``to make a choice without regard of the inner working of their code, its requirements and the weight it will impose on the system or other applications being run on it.''
Yes, and this is why universities teaching students Java and only Java are a major Bad Thing. Not only because people lose touch with the real cost and workings of things, but also because it makes them narrow minded: too many people I talk to just refuse to accept anything that implies Java isn't the greatest programming language ever.
``The infamous saying "Nobody was ever fired for choosing Microsoft" could be abused here as well.''
And if you don't teach Java, you will be accused of being impractical. After all, Java, is what everyone in the Real World uses.
``About Azureus, the point is that almost all if not all its weaknesses are due to the choice of Java as its language of choice. This should ring a bell.''
Not knowing Azureus, I can't really comment, but I've seen enough things like it that I can accept what you say.
``Just to clarify my take on Java. I'm not against it as a language, the 10% I know about it says that it's well designed, powerful and pretty straightforward to learn''
I wouldn't say so. I know Java 5 very well, and it's a very limited language: everything must belong to a class, public classes must be in separate files named identically to the class, there is inheritance, but only single inheritance, everything is a subclass of Object, except some things, containers store Objects (meaning no basic types like int or float), and when you take them out, you'll have to cast them to their actual type (which incurs extra code and run-time checks). Java 5 has a much better type system (with parametric polymorphism, allowing you to store whatever you want in containers, I think including primitive types). However, Java programs are still very verbose compared to programs written in other languages, especially languages I like to program in. There's lots of repetition and explicit things that must be changed whenever a type somewhere is changed or the exceptions a method can throw change.
``but I can't accept being forced to run most software under a vitual machine which makes it slower by orders of magnitude.''
That's not true. The JVM used to be slow, but it's improved impressively. YMMV, of course, but the Shootout puts Java at about half the speed of C, which puts it among the faster languages.
``Using a JVM because it allows a financial application to be hidden within security layer is also a myth''
The examples you give merely prove that there are other ways besides using the JVM, not that the JVM wouldn't be a suitable solution. However, with the Java platform being as large as it is, chances are that there are bugs which can be exploited.
``I can barely understand corporate choices like "being delivered on schedule" or "instead of 2 good programmers it can be done by 10 monkeys, and they still cost us less", but for Open Source and community driven projects Java should never be considered. Let alone that if Sun goes bust (or decides to kill the platform) your project is esentially doomed. Both are very unlikely scenarios, but not impossible.''
Sun seems willing to make the whole enchilada open source, in which case such risks disappear.
Please correct me if I got my facts wrong.
Not quite the same way.
.NET (and Mono) can both do ahead-of-time native compilation, even if you only have a bytecode (assembly) to start with, but by doing this, you lose a lot of run-time optimization. I know this is true for Mono, I'm not sure to what extent it's true for .NET or Java. It would be nice if we could cache information used by a running VM, but still do all the nice things that a VM does for you.
gcj can compile Java source or bytecode into a native binary.
But we should be doing lazy loading anyway, if it's possible to do it reasonably.
Don't thank God, thank a doctor!
but to this day, they have yet to disappoint with their engineering/technical appeal... Solaris... Java.... now adding support for a wildly popular dynamically typed language... The only one that comes close to their engineering savvy is Apple. Not so long ago there was talk of a Sun-Apple (Snapple? :) merger - http://digg.com/apple/Dvorak_Is_an_Apple_Sun_Merge r_in_the_Works. I've been writing software for 10 years now, and I prefer the small company setting... but if I were to ever work for a large company again, I'd like it to be like Sun or Apple, with superb engineers around me who are going to make me re-examine everything I know on a daily basis and keep me challenged forever.
'A lie if repeated often enough, becomes the truth.' - Goebbels
I work at a very large healthcare organization, and the deal is, we have the JVM installed in many environments. Trying to get native Python or Ruby installed is a no-go. But with JRuby, I've been able to say "just install these JARs please" and the operations people are OK with that. And voila, now I can write Ruby scripts, and Ruby is pretty cool.
Plus, we do have a lot of valuable security logic built into JARs in public static methods, so being able to access those Java security libraries, developed in house, is damn handy. JRuby is excellent, and this is awesome news.
Why is Ruby so far down at the bottom of the list sorted by score, in the Computer Language Shootout? The only other popular web server scripting language that's worse than Ruby is PHP! That's certainly nothing to be proud of.
With such lackluster performance, Ruby looks good to newbie programmers whose only experience is with PHP, but that's only because PHP is so horrible that Ruby looks better in contrast, and they haven't investigated any of the much more efficient, fully developed, well designed languages like Lisp, Python and Lua, which kick Ruby's ass when it comes to performance.
But if your main criteria for choosing a language is that it should only have a single one-size-fits-all unitard web framework, and you don't like the bewildering freedom of having many frameworks to choose from tailored for different situations, then by all means go with Ruby on Rails, and save yourself all the bother and effort of researching and understanding the problem space, and choosing the best tool to fit your application. After all, it levels the Web 2.0 playing field if everybody's trying to tighten their screws and splice their wires with the same hammer.
The fact that Sun hired a major developer of a programming language does NOT necessarily bode well for that language. Sun has a long track record of trying to scuttle technologies that they perceive as a threat, by hiring the developers, and diverting them to work on other things like Java.
-Don
Take a look and feel free: http://www.PieMenu.com
Lua totally kicks Ruby's ass in the Computer Language Shootout.
Ruby only seems like a great language to newbie programmers who don't know anything but PHP. It's not BAD, but it's not very impressive nor efficient compared to decent languages, and it's horrible compared to excellent languages.
-Don
Take a look and feel free: http://www.PieMenu.com
What are you, an old COBOL programmer who hates to learn new languages? Lua is an extremely well designed language, much more efficient than PHP or Ruby. Where did you get the prejudice that a high level game programming language would be designed for people who can't master other languages? Ruby shines because it's a real programming language, not a toy, and it integrates extremely well with compiled languages like C and C++.
I understand that you may not have heard of Lua, because there are a lot of people like you who are afraid to learn new languages, and reject them out of hand, without even knowing what you're talking about. But if you have the guts to open your mind to new ideas, then take a look at the computer language shootout, and see which interpreted scripting language is at the top of the pack, with a higher score than JavaScript, Smalltalk GST, Scheme MzScheme, PHP, Smalltalk Visualworks, Ruby, Icon, TCL, Pike, Mozart/OZ, Perl, Erlang Hipe, Python and Scala. Ever heard of any of those languages, old timer? Lua's faster than them all.
-Don
Take a look and feel free: http://www.PieMenu.com
The fact that the Self team is looking for work is telling. Sun hired the Self team, and plowed the fruits of their brilliant work into Java instead of Self or Smalltalk, and then Sun scuttled all the Self related projects. Before that, Sun hired the TCL team, announced with much fanfair that TCL was going to be the official web scripting language, then dropped it like a hot potato.
Don't read too much into anyone's promises that Sun is going to support Ruby, especially if they work for Sun and are trying to hire you. They lie to the people they're hiring, and play bait-and-switch, because their real intention is to divert people from competing projects that conflict with Sun's other goals-de-jour. From my past experience with Sun (like James Gosling personally promising me that Sun was totally behind NeWS and would soon make NeWS source public domain), I believe that it's quite likely they'll let the JRuby team work on Ruby for a little while, then divert them onto something else. If you can't beat 'em, hire 'em and tell 'em to stop. That's the way it works in the real world, kids.
-Don
Take a look and feel free: http://www.PieMenu.com
In this world nothing is certain but death, taxes and flawed car analogies.
That's a mighty fine distinction and, I think, a distraction from the point.
The initial goal of what became Java was not to produce a real-time, mission-critical platform with two-phase transactions, high-volume messaging and queueing, and whatever other enterprisey buzzwords win the measuring contest this week. Yet Java grew out of that niche, as it proved to be a decent general purpose language and platform.
Given any other general-purpose language and platform (and here I include Perl, Python, and Ruby -- but not PHP), why does the designer's original intent matter one bit?
how to invest, a novice's guide
Why is that offtopic? Self, Squeak, Bistro are all derived from Smalltalk -- all of them reflective programing languages like Ruby. And the greatest problem of Self is that no one uses it. I find it a very good concept and a very interesting language. If only it got more attention.
Why is Ruby getting all that attention? I think there are many others reflective languages that could become much more than Ruby will ever be. Personaly, I dislike the idea of multi-paradigm languages: you end up with something thats is almost good in almost everything. Why not focus in a pure reflective language that won't solve all the problems in the world but will be perfect when a reflective language is needed? Do that with calls/links to other languages and you have the perfect programing environment: each language doing what it does best.
good grief, there are other (and better) web frameworks available based on Ruby than ruby on rails; ruby on rails is fun and coding-fast though. If you check out the comp.lang.ruby threads you'll find that plenty of folks have refactored various benchmarks in the C.L. shootout and been able to improve performance by factors of two to many times, which proves exactly nothing. The benefits of ruby aren't speed of execution. Speed of coding is, most power for the least typing compared to others except ocaml.
In this 4500 word article, which includes in addition to fun and hijinks detailed language updates for Ruby, Python, Squeak, Perl, Java, Javascript and 20 other languages and frameworks, a panel on functional programming and comparison between Ruby and Java.
Since I went to the trouble to write the English article I'd like to let people know about it since it is on an unknown site. So far just people in Japan and perlmonks.org people know about it. Considering that Ruby, Python, Java and Squeak are all mentioned in the article (and Ruby/Java generation is a big topic in Japan too) I can't figure out why such a relevant post gets backseated to Piquepaille and endless RIAA and voting machine stories. Anyway, if you are interested check out the article. As far as I know, this is the first breaking news coverage in the world of a fork in Ruby and retirement of its creator from work on the language (or so he says, hope not!).
FWIW the magazine in my hands right now, probably the best selling magazine in Japan in this space this month has the cover story that Ruby helps you solve problems fast. Also including articles on Java and a nice Perl Catalyst story.
I'll take a J2EE app and deploy it on Windows for development and Solaris for production, and half the time I don't even consider that the underlying architecture is as different as night and day. The app just works in both places.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
I am bemused people who think Sun is relevant anymore. It's stock went through the floor, the barrier hit by most others during the dot-con bubble burst, and proceeded to the basement. It's server technology just isn't that interesting and Java has never been interesting except as a way to import enormous numbers of programmers from India using the capital Sun had acquired from its early success.
Seastead this.
To be fair, the uptake of Java grew out of that niche but the language remained fairly true to its original design throughout.
In this world nothing is certain but death, taxes and flawed car analogies.
"It's server technology just isn't that interesting... ...and Java has never been interesting "
Are you on crack?
In some ways, I think we are close to agreeing (at least, I share your reaction to ASP and VBScript, and also used to assume that strongly typed languages had to be statically typed).
But in other ways I think we are talking past each other. A few of the places I think we may still disagree:
That means I won't have a half dozen differently specialized versions floating around, some having one bug fixed, some having another bug fixed...
But other than these sorts of points, I suspect we share the same goals and (on a large range of issues implied but not discussed by this thread) the same sensibilities.
--MarkusQ