Slashdot Mirror


Groovy JSR: A New Era for Java?

fastdecade writes "Groovy, the open-source scripting language, has been submitted for a Java Specification Request (JSR). And not without strong support from venerable J2EE practitioner/author, Richard Monson-Haefel, who labels this "the beginning of a new era in the Java platform". Groovy can use Java objects easily and compiles to JVM byte code, but it is nonetheless a scripting language at heart and a great companion for the more heavyweight Java programming language. Most JSRs concern new APIs, and this is the first JSR for an alternative language. Imagine a common platform of standardised languages talking to each other ... this looms as a big threat to .Net and a rejuvenation of the Java platform."

100 comments

  1. wasn't it that... by whathappenedtomonday · · Score: 2, Insightful

    java can only succeed if the runtime is part of consumer OSs? right now, I think it is not... . probably got this one wrong, dunno...

    --
    I hope I didn't brain my damage.
  2. Imagine.... by argel · · Score: 4, Informative
    Imagine a common platform of standardised languages talking to each other ...

    You mean like Parrot?

    --

    -- Argel
    1. Re:Imagine.... by Anonymous Coward · · Score: 0

      > Imagine a common platform of standardised languages talking to each other ...

      You mean like Parrot?


      No. Currently Parrot is a common platform of BASIC talking to itself, with lots of vaporous promises about how it's going to run perl6 and python and Ruby and everything and it's going to be teh BEST!!! and so on.

      What it's actually like is .NET, but that's from Microsoft and therefore anyone acknowledging its virtues will be modded into oblivion.

  3. bah by Tuxinatorium · · Score: 2, Interesting

    this isn't nearly as revolutionary as the article spins it as. .Net will continue to gain ground solely because of microsoft's promotional dollars, regardless of its merits as a language.

    1. Re:bah by jone1941 · · Score: 3, Informative

      Ugh, Interesting? Common moderators .Net IS NOT a language, it is a peice of marketing. You can wax philosophical about C# or the runtime, but don't make sweeping statements that don't mean anyting. Sorry for the rant, but this post just didn't even make sense, let alone say anything remotely interesting.

      --
      Fear trumps hope and ignorance trumps both
    2. Re:bah by hak1du · · Score: 2

      .Net will continue to gain ground solely because of microsoft's promotional dollars, regardless of its merits as a language.

      C# and the CLR will gain ground because they really do have considerable more technical merit than Java. They will also gain ground because there is a complete open source implementation available (there aren't for Java). .NET is a set of Microsoft-proprietary APIs. It will gain ground because Java doesn't address the needs of Windows programmers as well. Windows programmers aren't going to put up with Java if it doesn't solve their problems as well (which it doesn't).

    3. Re:bah by Anonymous Coward · · Score: 0

      muxa stuk sell

    4. Re:bah by Anonymous Coward · · Score: 0

      Anyone who can't figure out the difference between "common" and "come on" would have to be a spectacular moron, wouldn't you agree?

  4. Isn't this more a threat to Perl than .Net? by ObviousGuy · · Score: 5, Insightful

    Having a glue language to tie together Java objects is definitely cool, as is having the scripting language compile down to bytecode for easy deployment.

    I guess in some obscene way, one could infer that Java is somehow a threat to .Net because its set of tools has grown a little, but Groovy itself seems to be more a threat to Perl and Python and other scripting languages rather than anything Microsoft is doing (except for WSH, but is anyone really using that?) Having a scripting language that can reach directly into Java bytecode without having to invoke a separate VM is a great improvement over the current methods of running external Java programs.

    Frankly, to me, it doesn't matter which 'platform' succeeds. Both frameworks exist on many platforms, so whichever wins, we all benefit.

    --
    I have been pwned because my /. password was too easy to guess.
    1. Re:Isn't this more a threat to Perl than .Net? by Anonymous Coward · · Score: 0

      See Inline::Java.. Yes you can have perl Swing Event Handlers.

      Also see Inline::Python -- now python and perl can live together (bastard children).

  5. Let Me Get This Straight by Markus+Registrada · · Score: 4, Insightful
    This is like Python, except it's less portable (because JVMs are less widely ported than Python), and has a bigger memory footprint (because it uses JVM garbage collection instead of Python reference-counting), and it uses libraries with different actual semantics and different bugs on different platforms (because they're the Java libraries).

    It sounds to me like anywhere you think you want this, you would be better off with actual Python.

    1. Re:Let Me Get This Straight by Anonymous Coward · · Score: 5, Interesting

      This is like Python,

      Except it's actually elegant, based on Smalltalk, not whatever the heck Python is inspired by.

      And Python reference counting stinks, I just spent weeks debugging a C extension that keeps killing a Python-based server.

      I use Python, but I sure don't think there's anything "great" about it, at least not enough to explain why it seems *every* language discussion includes somebody who thinks Python is god's gift to computer science.

      Python came along at a time when people where starting to use Perl for bigger projects and realizing that Perl is really BAD for big projects. Momentum took over from there.

    2. Re:Let Me Get This Straight by malachid69 · · Score: 4, Insightful
      it's less portable (because JVMs are less widely ported than Python)

      What platforms is Java NOT ported to?

      I know it is available for Windows, Linux, FreeBSD, AIX, HP-UX, Solaris, AS/400, Handhelds (Palm, Handspring, SaveJe, etc), and direct hardware (PTCU and TINI)... What's missing?

      --
      http://www.google.com/profiles/malachid
    3. Re:Let Me Get This Straight by Anonymous Coward · · Score: 0

      Hey, look over there in the dark corner of the bar, there's a table of Gentoo zealots waving for you to come over and join them for a beer.

    4. Re:Let Me Get This Straight by FFFish · · Score: 4, Informative

      It's even less like Python, because Python has a port named Jython which... you guessed it! provides Python scripting within Java.

      --

      --
      Don't like it? Respond with words, not karma.
    5. Re:Let Me Get This Straight by Pengo · · Score: 4, Insightful

      "It sounds to me like anywhere you think you want this, you would be better off with actual Python."

      Unless you want access to any of the miriad of Java libraries that are available, such as JDBC drivers, XML parsers, SOAP tools and 3rd party components you may want to use unless you prefer to use something like Jython.

      I have to work with other bits of code and systems all the time, and thats the main headache with using Python that I run into.

      Python might be king of quick hacks, but for a large-scale project where bits of scripting code might be appropriate, this sounds like an excelent option where you would NOT be better off with python.

    6. Re:Let Me Get This Straight by stefanlasiewski · · Score: 2, Informative

      Something wrong with this Java?

      http://www.apple.com/macosx/features/java/

      --
      "Can of worms? The can is open... the worms are everywhere."
    7. Re:Let Me Get This Straight by Jerf · · Score: 3, Informative

      such as JDBC drivers, XML parsers, SOAP tools and 3rd party components

      Semi-check, built-in, check, and check (including a lot of real winners, particularly including multiple cross-platform GUIs).

      (The semi-check is because I'm not 100% certain the python modules match the JDBC completely.)

      The only advantage Java offers is when it has an actual library that you can't get in Python (or likely anywhere else); capability for capability the languages and libraries are pretty close to the same. I mean, we have "Web Application Servers" for Python (like Zope), but maybe you absolutely need some Java thing for some other reason. There's no one language that meets all needs. But there's no reason Python can't be used in very large scale projects successfully, as evidenced by the fact that it has been so used.

      Personally, I'd much rather use Python for the larger scale projects since for a variety of reasons I think it scales better then Java; Java projects IMHO survive because they get a lot more resources thrown at them, not because the language does very much to hold large projects together. But that's just my opinion.

      (Oh, and Jython, though I know it's been mentioned elsewhere.)

    8. Re:Let Me Get This Straight by hak1du · · Score: 1

      and has a bigger memory footprint (because it uses JVM garbage collection instead of Python reference-counting),

      Java does have a bigger footprint than Python, but that is unrelated to whether it uses garbage collection or reference counting. IMO, Python is a nicer language than Java, but the use of reference counting in Python actually makes it both slower and more bloated than a garbage collected implementation of Python would be.

    9. Re:Let Me Get This Straight by hak1du · · Score: 3, Insightful

      Except [Groovy] actually elegant, based on Smalltalk, not whatever the heck Python is inspired by.

      I don't see anything "elegant" about yet another scripting language built on top of a runtime designed for a simple statically typed language (Java).

      And Python reference counting stinks,

      True. It also makes the C-Python interpreter slower than a garbage collected version. It is somewhat disconcerting that this misfeature of C-Python still exists after so many years. In fact, the C-Python implementation has a number of other weak points. But it works well enough, and it sure is a lot more practical than running a JVM just to execute Groovy.

      I use Python, but I sure don't think there's anything "great" about it,

      Neither do I--Python is just one of many scripting languages. But between Python and the available alternatives, I think Python still is the best of the bunch. A JVM-only language like Groovy isn't even worth talking about.

    10. Re:Let Me Get This Straight by hak1du · · Score: 2, Interesting

      Unless you want access to any of the miriad of Java libraries that are available,

      No, I don't.

      Python might be king of quick hacks, but for a large-scale project where bits of scripting code might be appropriate, this sounds like an excelent option where you would NOT be better off with python.

      There are plenty of scripting languages for that. Jython and JavaScript have both C and JVM-based implementations. Beanshell is small and integrates particularly well with Java. I really don't see why we need Groovy.

    11. Re:Let Me Get This Straight by angel'o'sphere · · Score: 3, Interesting

      But it works well enough, and it sure is a lot more practical than running a JVM just to execute Groovy.

      I like to point out that running Groovy in a JVM means: you want to script java code.

      I also do not really see the difference between running a PVM or a JVM (python virtual machine versus java virtual machine).

      But: I know that Java Byte Code is Hot Spot compiled to machine code. A groovy script running in a JVM scripting Java classes or classes of other languages (like SmallTalk or Lisp or Prolog or Eiffel or Ada or: Python) is java byte code, isnt it? So it is compiled to machine code during runtime.

      Goovy is an excellent language. And in case it gains momentum like one has written here, there is no doubt that people will port it to Parrot and the Python VM just like Python is ported to the JVM.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    12. Re:Let Me Get This Straight by Arroc · · Score: 1

      I was under the impression that python had an optional garbage collector, enabled by default.
      Also, I'm not sure what do you mean by bigger footprint when you refer to a language. GC interpreters/VMs may have a bigger footprint, but at the same time the footprint of the running software is smaller than reference counting because of the lack of reference counters.

    13. Re:Let Me Get This Straight by Anonymous Coward · · Score: 0

      > Scales better then Java

      Is there anything that actually scales worse than python - just check out the benchmarks. There was an OSNews benchmark discussed on slashdot few months back. Python wasn't even in the same league as the other languages. Performance of python was SHOCKINGLY POOR.

      Comparing J2EE to python is like comparing an F16 to a tricycle.

    14. Re:Let Me Get This Straight by Anonymous Coward · · Score: 0

      If you think reference counting is so great, have you considered circular references. This can actually leak memory - not save it.

      Microsoft switched from reference counting to garbage collection when they switched from VB6 to VB.NET (Not that I'm a fan of either), because reference counting is flawed.

    15. Re:Let Me Get This Straight by hak1du · · Score: 1

      I also do not really see the difference between running a PVM or a JVM (python virtual machine versus java virtual machine).

      Well, unlike Sun's Java runtime (which is the only one that counts), the Python runtime is open source. Furthermore, the Python runtime takes a fraction of the amount of memory of the Java runtime.

      Goovy is an excellent language. And in case it gains momentum like one has written here, there is no doubt that people will port it to Parrot and the Python VM just like Python is ported to the JVM.

      The Python port to the JVM was a fluke--it only works so well because someone really smart spent a lot of time on making it happen. If anybody ever creates a non-JVM implementation of Groovy, then it may become more than a niche language. But I wouldn't bet anything on that happening.

    16. Re:Let Me Get This Straight by angel'o'sphere · · Score: 1

      Why dont you keep your discussion straight?

      First you doubt groovy is worth it and you argue Python is better somehow.

      Now you start arguing with open source ... where is the relation?

      Finally you try to distract the reader even further by saying this: The Python port to the JVM was a fluke--it only works so well because someone really smart spent a lot of time on making it happen.

      First I like to point out: there have been two Python ports to the JVM which got merged later to the Jython we have in our days.

      Second I like to point out: Writing a Python compiler for the JVM is as trivial as writing a Python compiler to the PVM. Funny is: You start in a pure Python environment and use the Python compiler which is written in Python to generate Java Byte Code. Then you compile just that Python compiler with itself into Java Byte Code. Now you only need a Python class loader which compiles with that new compiler the on demand loaded python classes to the Python/Java mixed environment.

      The only part slightly more challanging is interfacing with Java classes as that does not come out of the box.

      Well, my main point answering in the first line to one of your posts was: you simply seem not to have looked at "Groovy the Language" at all.

      Otherwise you would likely allready start writing posts about which feature to copy from Groovy and to incorporate into Python :D

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    17. Re:Let Me Get This Straight by hak1du · · Score: 1

      Well, my main point answering in the first line to one of your posts was: you simply seem not to have looked at "Groovy the Language" at all.

      Sure, I have. It's just another run-of-the-mill scripting language. The only significant distinction is that, so far, it seems particularly tied to the JVM.

      Second I like to point out: Writing a Python compiler for the JVM is as trivial as writing a Python compiler to the PVM. Funny is: You start in a pure Python environment and use the Python compiler which is written in Python to generate Java Byte Code. Then you compile just that Python compiler with itself into Java Byte Code. Now you only need a Python class loader which compiles with that new compiler the on demand loaded python classes to the Python/Java mixed environment.

      Getting Python to run well on the JVM is a major effort because the two object models are so different, and it requires much more effort than simply "compiling". In short, you simply don't know what you are talking about.

      Why dont you keep your discussion straight? First you doubt groovy is worth it and you argue Python is better somehow.

      I didn't argue that the Python language is better. Both Python and Groovy are boring as languages. The only significant difference between the two is the of user communities and implementations. Python has a large, existing user community and it has an implementation that is not tied to the JVM.

      Now you start arguing with open source ... where is the relation?

      You asked about the difference between the JVM and the PVM. The biggest difference is the license and the patents (the PVM is free and open, the JVM isn't). (There are also significant technical differences--the PVM is a dynamically typed runtime, supports multiple inheritance, and supports dynamic changes to objects; the JVM does not).

    18. Re:Let Me Get This Straight by hak1du · · Score: 1

      Goovy is an excellent language. And in case it gains momentum like one has written here, there is no doubt that people will port it to Parrot and the Python VM just like Python is ported to the JVM.

      It is the stated goal of Groovy to be a dynamic and scripting language for Java (see here). That is, its design is driven by the needs of Java developers and adapted closely to the Java environment.

      Maybe it will be ported to other platforms, but Groovy will then be as foreign on those other platforms as something like Jython may seem to Java developers.

    19. Re:Let Me Get This Straight by angel'o'sphere · · Score: 1

      Could not resist:

      The biggest difference is the license and the patents (the PVM is free and open, the JVM isn't)

      I did not ask about THOSE differents. Besides the fact that it is from a lawers point of view simply wrong. The JVM specification is "open". Everybody is free to wrie a JVM which is free software. I guess the "free software community" did not found it worth while to do so. Or how do you explain that there are about 20 open/free JVM implementations and none of them is "finished" while there are only 10 major closed source VMs? In relation to that there is only one Python implementatin I'm aware of.

      We where talking about memory consumption, startup time and script languages without VM versus script languages with VM.

      You argued Groovy needs a VM and left it open in a way indicating that Python would not need a VM.

      The technical diffrences are irrelevant. As both VMs can easyly adopt each others memory/object model. (Multiple inheritance works well for JYthon, dosent it?)

      My conclusion was: Python is a complete different beast than Java while Groovy is very closse to Java, so it makes indeed sense to put a bet on Groovy.

      Finally, I'm a coder. So I choose a languge fitting to my needs. Python simply does not. But well, thats a complete different topic as well :D

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    20. Re:Let Me Get This Straight by Anonymous Coward · · Score: 0

      "Except it's actually elegant, based on Smalltalk"

      Have you ever actually used smalltalk? Java is a lot closer to C++ than smalltalk. Rigid class heirarchy? Vtable based dispatch? C derived syntax?

      Transcoding Java to C++ is far easier than transcoding Java to smalltalk.

  6. *blink* hey this is COOL by Anonymous Coward · · Score: 5, Interesting

    As a hardcore Ruby lover, I've been unhappy that I can't use Ruby with the vast libraries available for Perl and other established libraries.

    But this groovy thing looks like a really nice smalltalk-esque language that hooks right into Java, enough to satisfy both sides of my brain.

    This is cool and I can benefit from this *right now* in my work. Forget Parrot or Perl 666 (heh).

    How come I never heard of this? And why doesn't jpackage have it?

    1. Re:*blink* hey this is COOL by costas · · Score: 1

      Are you aware of Jython (Jython.org) that implements Python in Java, so that you get most (if not all) of the extensive Python standard library in the JVM. Jython is exactly equivalent to Groovy (you can inherit Jython from Java and vice-versa) but is based on a more well-known language...

    2. Re:*blink* hey this is COOL by Anonymous Coward · · Score: 0

      But it's.. Python.. bleh.

    3. Re:*blink* hey this is COOL by miniver · · Score: 1
      Are you aware of Jython (Jython.org) that implements Python in Java, so that you get most (if not all) of the extensive Python standard library in the JVM. Jython is exactly equivalent to Groovy (you can inherit Jython from Java and vice-versa) but is based on a more well-known language...

      I've been a Python programmer as long as I've been a Java programmer (since 1996), so I've followed Jython with great interest. The problem with Jython is that it's implementation is ssssllllooooooooowww. As in 2-3 magnitudes slower than Python on the same machine, the last time I measured. :( Decompile some Jython classes and you'll quickly see why -- there's a large cost associated with implementing Python semantics on top of Java.

      Groovy interests me because it looks like I can leverage all of the Java class libraries while taking advantage of an agile, functional language, and still have most of the speed of Java (there is some performance hit because of auto-boxing and some of the other automagic features). I'm particularly interested in comparing the performance of Groovy with the performance of Java and Python/Jython for similar functions.

      --
      We call it art because we have names for the things we understand.
    4. Re:*blink* hey this is COOL by Anonymous Coward · · Score: 0

      Are you aware of jruby ? ;)
      notice that jython looks (I know it's not) dead.
      python 2.1 misses too much useful stuff.

  7. Warning, Obligatory Jython reference ahead by adamy · · Score: 1, Interesting

    Ok, we got that out of the way.

    I hate scripting languages, except Bash shell.

    Why...because when I program I want an object oriented language. Notice the period at the end of that sentance. If I didn't want the Benefits of Java, I would not program in Java.

    Yes, I would love it if the Runtime environments for PERL, Python, Java, Ruby, and a slew of other Lagnugaes could be combined so I could have one and only one virtual machine required.

    What I really want is to not have to wrap any Java program I write in a Bash script just to get the Damn thing to run. I realize the gcj way is to compile to .o files, which is cool in its own way, but what I really want is:

    Environmental Variables. Java used to have them. But because of the Mac (oS 9 and before, mind younot OSX) it was removed from the language. Instead, we have -D parameters on the command line. Oh Joy. So to run a program with a different config directory than expected I get:

    CLASSPATH=Blah
    CLASSPATH=$CLASSPATH:Blue
    CLASS PATH=$CLASSPATH:Blink

    java -Dcustom.config.dir=/home/adam/blah -classpath=$CLASSPATH com.younglogic.app.Executable

    and then I stick this whole thing into a bashscript. Will Groovy fix this for me? Nope, I'll just end up with

    #!/usr/local/bin/groovy
    #cus you know they'll want to stick it in local

    CLASSPATH=Blah
    CLASSPATH=$CLASSPATH:Blue
    CLASS PATH=$CLASSPATH:Blink

    exec com.younglogic.app.Executable

    #Or what ever groovy decries is the right way to execute a java executable.

    I still won't use it to extend Mozilla, since that will involve spinning up the JVM and Mozilla already has one of those. Maybe be nice for Eclipse plugins, but, wait, now we are back to real programming tasks and those I want to do in Java.

    Hey, Maybe we can call groovy from inside JSP, just to get two layers deep in the scripting. I bet that will speed up development.

    Pan Pant, Ahh. now I feel better.

    --
    Open Source Identity Management: FreeIPA.org
    1. Re:Warning, Obligatory Jython reference ahead by adamy · · Score: 1

      Yes, I am still illterate.

      And I don't really hate Scripting languages. Some of my best friends code in Perl.

      I guess with Groovy we can also use the time honored

      Javaish? Funny, doesn't look like Javaish.

      --
      Open Source Identity Management: FreeIPA.org
    2. Re:Warning, Obligatory Jython reference ahead by cxvx · · Score: 4, Informative
      Environmental Variables. Java used to have them. But because of the Mac (oS 9 and before, mind younot OSX) it was removed from the language. Instead, we have -D parameters on the command line. Oh Joy. So to run a program with a different config directory than expected I get:

      Actually, as of JDK 1.5, System.getenv() is undeprecated (is that even a word? :). I'm sure that was a first in the java libraries though :)

      --
      If only I could come up with a good sig ...
    3. Re:Warning, Obligatory Jython reference ahead by cxvx · · Score: 1
      Hey, Maybe we can call groovy from inside JSP, just to get two layers deep in the scripting. I bet that will speed up development.

      That's not as far of as you think:
      You can create servlets using Groovy.

      --
      If only I could come up with a good sig ...
    4. Re:Warning, Obligatory Jython reference ahead by Petronius · · Score: 1

      that's wild! thanks for pointing it out...

      --
      there's no place like ~
    5. Re:Warning, Obligatory Jython reference ahead by angel'o'sphere · · Score: 1

      LOL,
      probably you should read a bit more about how to use the CLASSPATH.

      a) Bash exercise
      CLASSPATH=Blah:blue:Blink

      b) simle Java start
      java -Dcustom.config.dir=/home/adam/blah com.younglogic.app.Executable

      Note: as the CLASSPATH is set, tehre is no need to use -classpath

      As you dont like -D (I agree here) why dont you put the infoirmatin you pass here into a properties file and use Object.getResource("file.props"); to load it?

      c) complex Java sample:
      java -Dcustom.config.dir=/home/adam/blah -classpath=some/more.jar:and/even/more.jar:$CLASSP ATH com.younglogic.app.Executable

      Here you use the CLASSPATH variable, because you want the two additional har files AND the CLASSPATH.

      Bottom line: you also seem to have a different understanding about what scripting languages are. Not only shells or PERL are scripting languages. Every language used to tie other components together is a scripting language. So two Java programs should be tied together with a scripting language running on a VM. That means: 3 running java programs inside of the same VM. Not 3 processes (scrip process + program 1 process + program 3 process).

      Regards,
      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:Warning, Obligatory Jython reference ahead by iroberts · · Score: 1

      > You can create servlets using Groovy.
      ... but you might be happier creating them in Jamon, which lets you combine the convenience of a templating language with all of the type-safety that you would expect in a Java environment.

    7. Re:Warning, Obligatory Jython reference ahead by adamy · · Score: 1

      There were two threads to my Rant, one about scripting languages in general and one about having to Script in Bash to get a Java executable.

      I know about the $CLASSPATH thing, just like to make it explicit.

      I find whene ever I start scripting, the scope of the application increases and I wish I were using a language that was good for large projects. Some people are comfortable using Perl in the Large, but I am not. Maybe I was just warped too early. Blame my CS instructors. I always do.

      I've done the properties file trick as well, but i f you don't pass an overriding value on the command line, you have no way of customizing it other than by hardcoding the values and then checking for each one (/etc /home/$USER ./ ).

      I want to be able to create a Jar file with no extension that I could execute without putting anything on the command line. Ie

      MyJavaApp

      And execute it using ./MyJavaApp just like any other language. I Don't want to go to gcj and make .o files. I don't want to wrap it in a shell script. THe Linux Kernel already seems to have some knowledge of Java Executables. Why can't we close the loop on this one, in a non platform specific but standardized way that Everyone (But Windows of course with its damn insitance on .exe) can love.

      While I'm dreaming I'd like a Pony.

      --
      Open Source Identity Management: FreeIPA.org
  8. rejuvenation? by sfjoe · · Score: 4, Insightful

    ...and a rejuvenation of the Java platform.

    I think people who make statements like this aren't really aware of how widespread the usage of Java is in enterprise and multi-tiered systems.

    Java is not just applets.

    --
    It's simple: I demand prosecution for torture.
    1. Re:rejuvenation? by iradik · · Score: 2, Funny

      yah, but it's so corporate, bleh.

      it's about time cool programmers stepped up on the java scene.

    2. Re:rejuvenation? by fastdecade · · Score: 1

      I think people who make statements like this aren't really aware of how widespread the usage of Java is in enterprise and multi-tiered systems.

      LOL rejuvenate != repair

      Rejuvenation: To restore to youthful vigor or appearance; make young again.

      Java is 9 years old, getting to be a senior citizen in the world of programming languages. Do you think it's possible to be a successful 60-year old person and still enjoy being restored to youth? Of course, they are not incompatible concepts.

      Not everyone around here has their head in the sand waiting around for Perl CGI to rule again!

      Java is a mature technology, and, with reports of around 50% usage in enterprise systems, it can hardly grow much further. The Java platform, OTOH, is capable of large growth in new areas, e.g. configuration scripting.

    3. Re:rejuvenation? by Anonymous Coward · · Score: 0

      s/Java/Cobol/g and you'll achieve enlightenment.

  9. JCP naming thunk? by Tailhook · · Score: 3, Insightful

    Hopefully the name will get changed prior to getting this into the JSE platform. Does it bother anyone else to imagine having to talk about something called Groovy in a professional environment? The Groovy site is chock full of cuteness about making this or that more or less "groovy". I don't mind it personally but it's not helpful when you expect non-technical types to have faith in stuff.

    Anyhow, the JSE platform could use an implicit scripting language. I can see the technical merit in this. A Groovy based shell (with exceptions, an abstract file system, all the JDBC goodness integrated, etc.) that works right everywhere would be a nice bit of progress.

    --
    Maw! Fire up the karma burner!
    1. Re:JCP naming thunk? by Seraphim_72 · · Score: 1


      As opposed to Java, which is so well named itself? Or perhaps Sun? As in - "Sun's Java will help our business." Try that in 95 and see what you get from PHB.

      --
      Slashdot, where armchair scientists get shouted down and armchair theologians get modded up.
    2. Re:JCP naming thunk? by lmh2671772 · · Score: 2, Funny
      Hopefully the name will get changed prior to getting this into the JSE platform.

      I guess you could call it Javascript.

  10. Blocks! by OmniVector · · Score: 2, Interesting
    When i saw how Groovy does blocks, i immediately thought of Ruby. basically you have a block of code like this:

    array = [ 1, 2, 3, 4 ]
    array.each do |i|
    puts i
    end


    which outputs 1 2 3 and 4 on a line. the cool thing about this style of coding is it makes it's very easy to extend functionality like this to hashes such as:

    hash = { 1 => "one", 2 => "two", 3 => "three" }
    hash.each_pair do |key,value|
    puts "#{key} = #{value}"
    end


    notice how that code was able to do that much, without having to use "special" syntax like perl and php (foreach blocks, etc).
    i definitely will have to give this language a shot.
    --
    - tristan
    1. Re:Blocks! by Anonymous Coward · · Score: 1, Insightful

      The cool thing about blocks, that hardly anybody seems to mention, is that you can factor out "transactional" code. For instance, code like this:

      t = open_thing()
      try:
      frob(t)
      fozzle(t)
      glorp(t)
      finally:
      close_thing(t)

      In ruby you can factor out the try/finally and just do:

      with_thing { |t|
      frozzle(t)... etc
      }

      and you don't have to clutter the code with the same construct, over and over. This is why ruby is so popular with the XP crowd, you can factor out common stuff into ONE PLACE which you can't do with java or python.

      More examples:

      File.open('/foo/bar') { |f| ..
      }

      YOu know the file is closed at the end of the block.

      busy_cursor { .. do something time-consuming..
      }

      never worry about forgetting to put the cursor back at the end of the operation, or if the operation throws an exception.

      run_time = stopwatch { ...
      }

      stopwatch() is a function that simply times the code in the block.

      Wonderful feature that improves readability and allows you to factor out common setup/teardown code.

    2. Re:Blocks! by Unordained · · Score: 3, Insightful

      would you mind explaining in what way

      hash.each_pair do |key,value|

      is not "special" syntax, but

      foreach ($array_name as $key_name => $value_name)

      is?

    3. Re:Blocks! by OmniVector · · Score: 1
      because in with blocks, it's standard. perl requires a special syntax structure (foreach) just to do hashes. JUST for hashes. whereas ruby's is standard, and can be used for much more than arrays, and hashes. it's also used for threads, such as this:

      thread = Thread.new do
      executeThreadCodeHere
      end


      the code in that block makes a new thread. the do ... end code is a "block" (think of it as a dynamically created function) that's passed as a parameter to the thread constructor. that's not special syntax, this is part of the language's feature set. do you understand now?
      --
      - tristan
    4. Re:Blocks! by Anonymous Coward · · Score: 0

      in ruby it's just a function call. you can write your own functions that take blocks, for instance here's a function that calls the block twice:

      def twice
      yield
      yield
      end

      twice { puts "hello" }

      with PHP, etc., they are "special cases" baked into the language.

      In fact, Ruby is like that throughout it's design. You can write your own loops with continuations for instance. You can re-implement most of Ruby in Ruby itself, using the same syntax. Pretty nifty.

    5. Re:Blocks! by tunah · · Score: 2, Informative

      each_pair is a function call that takes a block (like an inline method). Obviously you need language support for passing blocks to functions, but this is a general purpose feature that is used in many places. In contrast, foreach is a (useful) hack for the specific case of iterating over a collection.

      --
      Free Java games for your phone: Tontie, Sokoban
    6. Re:Blocks! by popeyethesailor · · Score: 1

      Wowzers. Reinventing APL are we ;)

    7. Re:Blocks! by Unordained · · Score: 1
      [RELATED:]
      python lambda-functions (nameless functions, passed as callbacks) ... or function objects / callbacks in C++/C ...

      it's the equivalent, then, of using STL algorithms like ...
      vector bob;
      for_each(bob.begin(), bob.end(), mem_fun(&T::do_stuff));
      ... the difference being that C++ doesn't particularly allow for unnamed functions / classes, as would be necessary to do this.

      [NIT-PICK:]
      i would say that calling it a "block" is confusing, as that term is already used to refer to things in {} in most languages, or of equal indentation in python, or between BEGIN and END statements, etc.

      [DISCUSS:]
      although our project code includes plenty of callback/function object stuff, i can't say i miss having anonymous functions all that much. i've heard one of my programmers complaining he wouldn't mind having pascal-style embedded functions (declare the function inside another one to avoid polluting the namespace, make obvious the usage, etc.) but other than that ... (we code in C++, btw.)

      as to the other example given (other post) that includes opening a file and being sure it'll be closed again, well ... that syntax is nice, but it can also be done via destructors (as it goes out of scope, automatically close the file handle) -- it just generally isn't, for various reasons (reference counting, etc.)

      so ... is this a question of language design or library design? any language allowing anonymous functions and function callbacks would be able to do this, but would the libraries and most-used functions be set up to allow this? as demostrated elsewhere, such container functions have to know to take such a "block" and execute it at (at least) one particular point in the code.

      [QUERY:]
      what i was originally referring to earlier as special syntax was the |x,y,z| construct, but now i'm guessing that's the parameter list for the unnamed function? each_pair would call the function, assuming it should receive two parameters, which are bound to the names specified in the pipes? yes?

      [OT:]
      i've not studied ruby. a friend's topic for "programming languages" in college wound up being ruby; at the time, the only documentation was in japanese, so he spoke to Max over the phone about its origins. after hearing -that- story, i wasn't terribly interested. (something about hacking a perl interpreter as a prank. i'm glad that turned out to be useful to someone.)
    8. Re:Blocks! by battjt · · Score: 2, Informative

      We do a similar thing in Java with anonymous classes.

      new StopWatch(2000) { public void run() {
      frozzle(blah);
      }}.start();

      where StopWatch is a class that executes the run method for up to 2000 ms. Granted some syntactic sugar would be nice.

      I agree with yuour assertion that blocks are extrememly helpful. I was first introduced to them in Smalltalk.

      Joe

      --
      Joe Batt Solid Design
    9. Re:Blocks! by batemanm · · Score: 1
      perl requires a special syntax structure (foreach) just to do hashes

      foreach in perl deals with arrays not hashes. To deal with a hash you get the list of keys from the hash as an array and iterate through them. You can deal with arrays using a for loop if you want to, but foreach just reduces the amount of code you have to write.

    10. Re:Blocks! by Anonymous Coward · · Score: 0
      And what's special about that? It's just a closure. ML has had this stuff since the 80s, LISP had it in the 60s; in OCaml, for example, it's
      let l = [ 1; 2; 3; 4 ] in
      List.iter l print_int
      or, for the second example,
      let l = [ 1, "one"; 2, "two"; 3, "three" ] in
      List.iter (fun (key, value) -> Printf.printf "%d = %s\n" key value) l
      Needless to say the above code can be compiled to a native binary where it will perform around 10-20 times faster than the Ruby, Perl, or Python version...
    11. Re:Blocks! by jovlinger · · Score: 1

      [NitPick]

      I think the term block referring to [:args| statements] predates, or at least is contemporary with, the introduction of { } to describe blocks.

      In a way, you can see {..} as a handicapped version of [..], in that they are not first class and do not take arguments. To think: C was *that* close to having a proper lambda construct.

    12. Re:Blocks! by Anonymous Coward · · Score: 0

      Perl's foreach works on lists, which may be arrays or temporary values. And "foo while ($k, $v) = each %hash" is more efficient if you need both every key and its value.

  11. Scripting with .NET by Chester+K · · Score: 3, Informative

    Of course .NET already has support for JScript and VBScript -- however, the main problem with scripting on .NET is that once you load code into memory, there's no way to unload it without having to destroy the entire AppDomain.

    This leads to problems where you've got an environment where you'll be running lots of dynamic script code -- your process pretty much leaks memory. The only solution is to run your scripted code off in another AppDomain, but then you've got the considerable overhead of doing cross-AppDomain calls (serialization/deserialization, both ways) and you're restricted to types that can be passed across the AppDomain barrier.

    Even then, you've got to be extremely careful because if you pass back a type that was defined in the assembly generated by the script, your primary AppDomain will silently load the assembly itself to deal with the type (and keep it open forever -- the thing we wanted to avoid!).

    I understand there are considerable performance gains in .NET because of the no-unloading-assemblies behavior; but it makes .NET unusuable in the class of applications where you're running lots of different code from different sources; in this case, a MUD where users can script their own objects -- with the ability to arbitrarily rewrite and change their scripts at any time. .NET seems like it has wonderful support for everything else needed (Code Access Security, etc.), but that one single sticking point is a dealbreaker.

    I'm not all that familiar with this aspect of Java -- does Java suffer from the same problem of not being able to unload code/types from memory?

    --

    NO CARRIER
    1. Re:Scripting with .NET by iebgener · · Score: 5, Informative

      In Java, you can't unload code/type from the classpath (core classes you had when you started java) but if the class comes from a different classloader (created at runtime), you can do pretty much what you want... if you own the classloader...

      The only limitation is that the class must not be on the classpath (for security reason). This is also how you can have the same class but with different version on the same VM.

      See : http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ ClassLoader.html

    2. Re:Scripting with .NET by egomaniac · · Score: 1

      No. In Java, a Class is subject to garbage collection exactly like every other object (well, conceptually at least). When there are no more references to it, away it goes. Since a ClassLoader holds a reference to all of the Classes it loaded, and vice versa, Classes cannot be considered garbage unless their ClassLoader is also garbage.

      To be able to garbage collect Classes, you have to load them using a new ClassLoader, and then be damned sure that all references to the classes and the ClassLoader are destroyed. Both the Classes and ClassLoader then become garbage and are eligible for cleanup.

      --
      ZFS: because love is never having to say fsck
    3. Re:Scripting with .NET by earache · · Score: 1

      This isn't entirely true, if I'm understanding you correctly. It's really a matter of design.

      If you're running a MUD, let's say written in .NET, and want to add scripting on top of it, you wouldn't use ActiveScripting to do this (what I'm assuming you're doing).

      Instead you would more then likely have those scripts compiled and objects "loaded" on the fly using ICodeCompiler using the GenerateInMemory property set to true. You can then recompile this on the fly at any point.

      Your problem lies in script B using a class in script A, and recompiling script A while script B is instantiated. I've never run into a situation where this is a plausibility, but would certainly be something to investigate. I'd imagine this would be a problem in Java as well as it's really a design issue versus something intrinsinic to the platform.

      Just my guess however.

    4. Re:Scripting with .NET by Chester+K · · Score: 1

      Instead you would more then likely have those scripts compiled and objects "loaded" on the fly using ICodeCompiler using the GenerateInMemory property set to true. You can then recompile this on the fly at any point.

      That's the approach I was planning on using, however that just creates a more-or-less standard assembly in memory. There's no way to unload the assembly. Recompiling doesn't unload the old assembly, just returns you a reference to the new assembly via the CompiledAssembly property. The example you gave about recompiling Script A while Script B is instantiated isn't even an issue, since Script B doesn't overwrite Script A -- it co-exists with it in memory.

      In an application it's expected that user supplied code can and will be changed and recompiled often; you'll quickly run out of memory as all those old and no-longer-needed assemblies start to add up.

      Suzanne Cook, a developer of the CLR Loader, wrote up this blog entry on why unloading assemblies isn't supported in .NET, and pretty much any time it's brought up, Microsoft's response is basically "can't do it in our architecture, if cross-AppDomain calls are too slow, we'll work to speed them up" but they completely miss the constraint of not being able to pass parameters that you can't serialize across AppDomains.

      --

      NO CARRIER
    5. Re:Scripting with .NET by lupus-slash · · Score: 1

      You should probably check out the new DynamicMethod class: it allows creating methods at runtime that are not bound to a dynamic assembly and whose code can be garbage collected once it's no longer in use.
      Mono implements it already.

    6. Re:Scripting with .NET by Anonymous Coward · · Score: 0
      I'd have to agree with the parent post. I came across a similar situation where an application uses schema to generate classes. At runtime, I want to provide the ability to extend my base classes in a service oriented manner. Without using AppDomain it's less than ideal. I haven't found a good alternative to using AppDomain. Using AppDomain isn't necessarily bad in my mind, but after SOAP and XML parsing is added to the performance equation, it becomes an issue.

      In a servlet container, each webapp has it's own classloader as defined by the servlet specification. Each webapp in a servlet container can be deploy/redeployed and the servlet container is suppose to manage the process for you. Anything loaded with the system classloader on the otherhand can't be over-ridden which is correct in my mind. In the case of IIS, I believe a normal ASP.NET is not loaded into it's own AppDomain for better performance. I really hope Microsoft fixes IIS and .NET with regards to this issue. I could be wrong, since I haven't found any official documentation stating ASP.NET apps are loaded in individual AppDomain.

    7. Re:Scripting with .NET by Chester+K · · Score: 1

      You should probably check out the new DynamicMethod class: it allows creating methods at runtime that are not bound to a dynamic assembly and whose code can be garbage collected once it's no longer in use.
      Mono implements it already.


      Awesome. That's exactly what I need; and Mono implementing it is even better since that's my development platform.

      --

      NO CARRIER
  12. What platforms is Java NOT ported to? by Tumbleweed · · Score: 4, Funny

    > What platforms is Java NOT ported to?

    Atari 800. It's very frustrating.

    1. Re:What platforms is Java NOT ported to? by alexo · · Score: 1

      > > What platforms is Java NOT ported to?
      >
      > Atari 800. It's very frustrating.

      Next thing you're going to mention the TI-55?

    2. Re:What platforms is Java NOT ported to? by Tumbleweed · · Score: 1

      Actually, I'm more of an HP-11C fan. :)

    3. Re:What platforms is Java NOT ported to? by malachid69 · · Score: 1
      Ok, you made me curious.

      It is available for the Atari-ST (though not full implementation).

      There is also an Atari800 emulator written in Java, and another one for Zaurus...

      But maybe I am searching wrong, because the only Python-related atari800 links I found were for the same emulator type of things?

      --
      http://www.google.com/profiles/malachid
  13. I mean, really by smittyoneeach · · Score: 1

    What advantage has this over Jython?

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    1. Re:I mean, really by Anonymous Coward · · Score: 0

      Jython is buggy and seems like a dead project. Groovy is still buggy, but at least it's very actively being developed. Also, with Groovy you can add optional static types. This gives you compile time type checking and also the opportunity to get the performance advantage of static typing (although I'm not sure if it will be implemented as such).

    2. Re:I mean, really by jovlinger · · Score: 1

      proper lambda abstractions

    3. Re:I mean, really by Anonymous Coward · · Score: 0

      real lexical closures, like LISP or Ruby.
      Blocks and SmallTalk/ruby-like iterators.
      GPath and GroovySQL.

      Plus, jython is stable at python 2.1, which is not even pure OO neither has iterators and IIRC, not even nested scopes.

      I'd still use nice[.sf.net] much more than groovy.

    4. Re:I mean, really by Anonymous Coward · · Score: 0

      no perforrmace enhancement. Groovy even uses all boxed types, so performance will sux for some more time. But you're using a JVM, you'll know that it sux anyway

  14. what's the point? by hak1du · · Score: 3, Insightful

    Groovy seems to offer nothing that you don't already get in Python, and Python has implementations available based on C (C Python), Java/JVM (Jython), and C#/CLR (IronPython).

    The only thing Groovy does offer is that it is Java/JVM-specific at this point--there are no implementations based on anything other than the Java/JVM runtime. That may be a good thing for Sun--tying people even more to Sun's platform--but it sure isn't good for anybody else.

    1. Re:what's the point? by angel'o'sphere · · Score: 1

      Oh, thats a silly post, I really hat seeing it moddd up :-/ Sorry hak1du, no offense.

      Groovy seems to offer nothing that you don't already get in Python


      If like extend that just a little bit then I come to this: every language seems to offer nothing more than any other language allready has.

      Ooops. And now? Am I wrong? All programming languages can be used to do more or less everything else.

      However there are two things which make a HUGHE difference:

      a) programming pradigm
      its a difference wether you code object oriented, functional, list oriented procedural or assembler or a combination of several of them or mimicing one with the features of the other

      b) SYNTAX
      I belong to the guys who can not remember why and when to use a $ or a % or a @ in PERL. The distinction makes absolutely no sense to me. Just my brain ...
      But what I want to say is: If you are allready fluent in Java you pick up Groovy in 5 minutes. If you ever heared anything about other programming languages, noteable SmallTalk, then the new features Groovy offers you are easy to learn. Did you notice that Python has a completely uncommon syntax? It has no relation to Pascal or C. It is not Fortran and not PERL, its something DIFFERENT. Please don't talk about easy or not ... alone the fact that you have to "install" Python and to learn something new while Groovy is just another library, another jar file in my class path ... OH, thats a difference.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  15. Great but why a JSR by Laz10 · · Score: 4, Informative

    There are many other scripting languages for java than groovy.

    Beanshell (Lightweight Java)
    http://www.beanshell.org/

    JavaScript (Rhino)
    http://www.mozilla.org/rhino/

    Python (Jython)
    http://www.jython.org/

    Ryby (JRuby)
    http://jruby.sourceforge.net/

    has all been available for several years without being made a JSR.

    What qualifies groovy to become a JSR instead of them ? Isn't choice good.

    IBM has open sourced a framework called BSF
    http://jakarta.apache.org/bsf/
    that allows for integrating scripting languages into java. I could see why THAT would be promoted to a JSR -- not a specific scripting language.

    As the name suggests it looks like groovy is just a couple of guys who have been playing around with tossing "groovy" language features into their homegrown scripting langugage. Cool, interesting but why make it part of the big package ?

    1. Re:Great but why a JSR by jkauzlar · · Score: 1
      This is a good point. I'm happy to see something getting JSR status however. If it becomes a standard, perhaps more work will be done to add the language as a possible JSP scriplet alternative and what's more the compiler may be made more efficient than Jython's (which I haven't had the opportunity to try yet, but I hear that there exist some limitations on the code to be compiled... is this true?).

      Wouldn't it be nice to have a community supported alternative to Java? Or even a language integrated tightly into Eclipse to implement quick and dirty scripts? The language could be integrated into IDEs for faster IDE customization and extension in the same way that Emacs supports Lisp.

  16. muliple languages in the JVM by BoxedFlame · · Score: 1

    There are hundreds of more or less stable languages for the JVM already. .NET doesn't have a tenth of the variation in lanugages despite all the hype about the "common language" runtime. Now, Groovy is a bad idea because multiple languages is a bad idea. You don't want millions of bits and pieces of the code written in different languages, it just becomes totally unmanageable. Groovy to me looks like some persons poor attempt at making himself look cool by submitting it as a JSR, I hope this crap gets voted down, but with utter crap like JSF going through there doesn't seem to be much hope.

  17. uhhh, no by viperstyx · · Score: 1

    "this looms as a big threat to .Net and a rejuvenation of the Java platform"

    except that .NET already has like a bizillion languages under it that can "talk" together.

    1. Re:uhhh, no by I+confirm+I'm+not+a · · Score: 1

      ...and...except that Java already has, like, a bizillion languages under it that can "talk" together.

      The list referenced earlier in the thread lists some, but there are "bizillions" (what is that? Like two zillions?) more. Google for them.

      --
      This is where the serious fun begins.
    2. Re:uhhh, no by trouser · · Score: 1

      No, it's a zillion that goes both ways.

      --
      Now wash your hands.
  18. Imagine... a single Virtual machine spec... by johnjones · · Score: 1

    Sun have a chance !

    a Sun Virtual Machine ( SVM ) that has libs for java and can be targeted well by other langs

    start with the JVM fix the Java memory model
    (JSR 133, which has been active for nearly three years see article on fixing it and links at bottom located at )

    let ADA and fortran target it well
    (i.e. think about take floating point IEEE754 seriously but get it out there and tune later)

    really not that hard look at Programming Languages for the Java Virtual Machine

    Start with something you know well and adapt it

    if it was refered to the ITU I bet they would love it and make it a standard !

    regards

    John Jones

  19. probably won't fly by Anonymous Coward · · Score: 0

    given Sun's focus on compatability and focus on well managed development, groovy would be a step away from that goal. I see no real point in making groovy official spec, other than it makes the groovy developers look cool. there are other scripting languages out there for java, so again nothing special. just someone's need for affirmation.

  20. zillions... by Petronius · · Score: 1

    Java has a few zillion too.

    --
    there's no place like ~
  21. What's crappy about JSF? by FerretFrottage · · Score: 1

    Not a troll, just want to know what you find crappy about JSF (I'm about a month away from looing into it so I'm trying to gather information)?

    --
    "Look Lois, the two symbols of the Republican Party: an elephant, and a fat white guy who is threatened by change."
  22. Thoughts on the Atari 800 by Tumbleweed · · Score: 2, Interesting

    It was just a joke. :)

    I've become rather fascinated of late with the Atari 800, and with what "could have been," had it been upgraded properly.

    The Atari 800 was the brainchild of Jay Miner (who later created the Amiga), and you can see the Atari 800 really _was_ the precursor to the Amiga, with its use of coprocessors for video, sound, & memory management, in addition to the CPU. The only thing that hobbled the Atari 800 was its expandability, or, lack thereof. Unlike the Apple //, the Atari 800 had no expansion slots, and the memory was only expandable to 48K (though it used VERY easy to use cartridges to expand memory), despite using a chip that could (in theory) address 256K.

    Later Atari 800 machines (XL & above) wound up being expandable to more than 48K, but the way the machine was designed, software that took advantage of memory over 48K wouldn't work on the original 800s, thus, few software makers took advantage of that ability, understandably wanting to sell products usable on as many machines as they could. Thus, despite several generations of barely-different upgrades to the Atari 800, the line died.

    Too bad. It used a much faster version of the CPU than the Apple or Commodore machines of the day (1.89mHz vs 1 or 1 for the Apple ][ & C64), as well as speeding up everything else by using coprocessors. Had the expandability been better, things may have turned out much different.

    It's also interesting to see people making new software & hardware (!) for the Atari 800 line even today. Bizarre, but amusing. I never had an Atari 800 when I was a kid (I had an Apple //e), but I'm thinking of getting one just to play around with. There are connectors now to hook up your Atari 800 to your PC to store software, etc. on the PC, while still being able to use them on the Atari 800, plus access other hardware on the PC. New OS boot cartridges allow the 800 to start up in 2 seconds. Wish I could do THAT with my Win2k box!

  23. Re:What's crappy about JSF? - Nothing by Decaff · · Score: 1

    JSF isn't crappy, just widely misunderstood. JSF is a comprehensive framework that allows the development of structured and scalable java GUI applications independent of the implementation of the GUI. For example the JSF reference implementation provides code that allows server-side processing of HTML forms, but the GUI could be just about anything, including Swing, SWT, Flash... The supposed 'crap' is that many developers expected JSF to be a simple and/or visual design tool for web apps, whereas in reality JSF is a standard framework that IDEs are going to be using to build such tools.