Is There Something Java Should Do

Is there something Java should do?

Simply because of its ubiquity and its relative security at running untrusted code, I think Java would be an good platform for large-scale distributed computing. caveat - I've spent the last 3 years doing Java almost exclusively for server side development (i.e. I know nothing of the java.awt.* and javax.swing.* packages) --MarkAddleman

I doubt there is a meaningful large-scale distributed computing application that isn't a fiction of the UML diagrams describing it. Don't you just end up in runaway complexity trying to avoid race conditions? For server-side development, I prefer using Perl (and/or ANSI/ISO C/C++). -- SunirShah

I think when he says "Distributed Computing" he's talking about something like SetiAtHome or the recent RCx cracking contests. Java could work well for that, but SetiAtHome prefers to issue an optimized binary for every type of machine, and probably runs on one or two machine types that don't support Java. Also, would you really want SetiAtHome running on your Java-enabled WAP phone or PalmPilot? -- EdwardKiser

We're all most productive in the language we like the best. I prefer using Java. Java isn't better than Perl -- and vice-versa -- it just fits my programming comfort zone better. Come on, LanguageWars are out of style. I vote that this page be deleted; WhenShouldntWeUseJava covers similar ground and is more helpful. --JimLittle

I didn't see this page as a flame at all; I saw it as more of a "Now I've got the shard, but what do I do with it?" kind of page.

It's legitimate to claim that certain languages are better than in others in particular contexts. In fact, this is what the seminal LittleLanguage discovery was. I claim that Perl is better at server side development than Java. I back it up by stating that Perl has better foo for any given foo than Java. In fact, this might suggest that Perl is always better than Java. This is indeed what I claim. Note that Java phones don't actually work yet. (Even iAppli has been having major problems.) And if you've managed to find a model that hasn't been recalled, it's not profitable. Note that way back in 1993, Java was conceived as the quick hack language to write code to run portably on HandHeld devices of that day. It's 2001, and Java has become far more than it was ever intended to be (Jini was meant to be the main show), and has become far less than it was set out to be.

Simply put, there is no niche that Java has managed to crawl into that Perl hasn't come along and done better; or, conversely, there isn't a niche that Perl has traditionally done better that Java has come along and failed at. Even marketing wise, Perl is doing well. I don't think eCommerce solutions count in particular because eCommerce solutions haven't succeeded. See the point about Java phones. Still, mod_perl + Apache or the Perl IIS extensions still outdo any Java solution. By the way, Perl is probably one of the, if not the, most strictly powerful languages ever to exist. So, it's naturally going to be better at foo than Java, which is one of the weakest languages to ever exist (by intention).

Try Perl. You'll like it. If you don't like it, you can change it. Try doing that with Java, the language where Sun will 0wnz j00 if you do something as trivial as puting programmatic statements in comments (What does this refer to?). -- SunirShah, your friendly neighbourhood Java hater ;)

Actually it seems easier to switch to RubyLanguage from Java than to Perl. Perl's object-orientation seems to be a bit of a hack. But Perl has one advantage: mod_perl. When I recompiled my Apache with mod_perl, it sped up my PersonalWiki by about twenty times. -- EdwardKiser (much later) (Note: mod_ruby now exists)

Note that Java phones don't actually work yet.

Yes. Are Perl phones doing any better?

This page has two meta benefits. First, it's one concentrated place where I can rip into Java without derailing the rest of Wiki. Second, I actually do want to know if Java has a purpose. I have yet to find a single place where Java has any merit except for money-oriented programming. But while I honestly do believe that SoftwareIsReallyPointless, and thus MOP is a legitimate reason to use a terrible technology, perhaps you can convince the human in me that Java has a purpose. -- SunirShah

Okay, Sunir, I'll bite. But don't expect me to argue that Java is better than Perl; I've ridden the advocacy bandwagon and found it an unfriendly trip. Still, I don't mind saying what I like about Java.

Allow me to establish a little credibility: I learned Perl before Java and I've written significant applications in both. My biggest Perl app was a server-side HTML templating language compiler. It took HTML and a little language of my invention and turned it into server-side Perl code. Since then, I've worked in Java, on larger projects involving more people.

Some of the things I like about Java:

Again, I'm not comparing to Perl. I'm just saying what I like about Java. That doesn't answer the question in the page title... but it's a strange question. Java should "do" what any language should do: be used as a human interface for writing programs. I've found it effective for that.

(PS: I agree with your sentiment about distributed applications.) --JimLittle

I think I should concede some points before this page degrades into an unhumourous trollfest (humourous trolling is all well and good, of course). Java is obviously the best answer to many applications given the large contingent of developers now trained in Java exclusively. Similarly, there are now a large contingent of developers trained in Perl exclusively. I'm not sure which group is larger, but I'll bet the average age of the exclusive Java developer is much greater than that of the Perl crowd. (Would this suggest that Java will die soon because it is not "cool" with the next generation?)

On the contrary... I think Java is the only language that the next generation truly has faith in. C++ and Perl are seen as somewhat old-fashioned.

Many clients (those with actual money) have environments that use Java, especially e-commerce customers that have gone with anything other than IIS or Apache. This means we program in Java. CustomerFirst?.

Finally, the W3C has adopted Java as its defacto language. While this is unfortunate for a standards body given the licensing restrictions that come with Java, that's just how it is. This has generally made Java the language of reference implementations on the Internet. Doing the equivalent in Perl or Haskell or Smalltalk would not be accepted. Of course, doing the equivalent in C or C++ would be accepted.

I dispute every single one of your points above, by the way, but that would be trolling for nits. ;) -- SunirShah

Let me answer your question by saying `yes'. Java should replace C++. The only reason Sun hasn't released a Java compiler (or released the spec) is because they can't make any money that way. It's trivial to adapt the Java syntax to gcc.

Replace C++ at doing what, exactly?
Java should replace C++ everywhere it can. C++ code is just too easy to screw up. I spent several years reviewing code written by mid level C++ programmers. They weren't senior, but they weren't junior either. The number of pointer and manual garbage collection errors convinced me that C++ is too fussy for most programming. Using Java helps avoid these problems.

oh my lord! while an early adopter of java back in 95/96, i've wished for years it would just go away! CeePlusPlus was (and remains) a significantly richer language. Anybody who cannot code in CeePlusPlus should go into management or become a DBA.

<sarcasm> And everyone that cannot crank-start a Model T Ford should hire a chauffeur or ride the bus. </sarcasm>

(Is there a more informative/polite way of saying that ? ItsNotAboutDiscipline ?)

IsThereSomethingJavaShouldDo ? From the perspective of 5 years of Java programming, I think it should disappear sooner rather than later to make room for real progress.

Just to state the obvious: yes, there is something that should be done in Java, namely, writing Web Applets. Or am I missing something? -- StephanHouben

What web applets? Do you see very many in Java? I think you mean JavaScript, ActiveX, and MacromediaFlash. -- SunirShah

No, I mean Java. E.g. I have written some applets as courseware on numerical mathematics: I still don't think it couldn't be done in anything but Java, given the requirements: -- StephanHouben

What about Squeak?

Requires a plug-in to be downloaded, cannot be easily mixed with HTML (generated from LaTeX). I suspect that numerical performance is less, although I haven't tested it, so take that with a grain of salt. It wasn't available when I wrote those applets. -- sh
Since a fair amount of this page seems to be JavaVsPerl? I will continue this theme. I have only a passing familiarity with Perl, so please correct any of my misconceptions

Java has these advantages over Perl: Note that the large majority of these advantages are true for ServerSideCode?, not for ClientApplicationCode?. A lot of people seem to have negative opinions of Java based on its client side GUI performance several years ago.

In general I would expect Perl to be superior for smaller programs and as the requirements and complexity increase Java comes into its own. -- DavidPlumpton

Is this a serious thread? I've been working in a major US Bank for the last 5 years using Java for, well, just about everything. Perl's nice too but ever tried to maintain it? If you admit that you don't know java then why make ignorant comments about it? - Paul Hill

Ever try to maintain a legacy java application? I have, even ones I have written. Maintenance tends to be a language-neutral pita.

It is interesting to note that almost all of the benefits listed for using Java are nothing to do with the Java language per se. When people talk about Java they are usually lumping three independent things into that one word. The Java langage, the Java Runtime Engine, and the standard set of Java libraries. Most (if not all) of the usual Reasons for using Java are to do with the JRE or the Java libraries - eg security, web capability, GUI, cross-platform equivalence of binaries, etc. Look at the list given above. How many of those are specifically about the language? Maybe Scalability and Maintainability, although that one could be argued back and forth. Probably Compile time type checking (the thing I hate most about using Java!) is clearly a matter of personal preference. It is interesting to note that Alan Kay, who invented the term Object oriented programming has said that Extreme late binding of everything is one of the most important aspects of a true object-oriented programming language - NOT compile-time type checking!. So is the Java language independent of the JRE and the standard Java libraries? Yes. There are numerous languages that have implementations written to run on the JRE, including implementations for JavaScript, Scheme, Lisp, Basic and several others. Because these use the JRE, and have access to all the standard Java libraries, (as well as any other Java class files you happen to have), you will find that they share most or all of the usual Reasons for using Java - but without the downside of having to use the Java language! (BTW, since the Parrot runtime engine claims it should be able to run Java compiled code, this would imply that the standard libraries are independent of the JRE - don't know how that one plays out in practice). As to which is better, Java or Perl, I like this quote I found somewhere on the internet: "I would rather use Perl than use Java .. and I would rather be eaten by a crocodile than use Perl!" My response to the question "Is there something Java should do?" is "No". Glenelg Smith

u are right in that there are three separate parts to the argument. Unfortunately you give too much credence to part#1: the language itself. ALL languages suck. The major reason to chose a programming language should be for the libraries and documentation/support ecosystem. The notable exception is for embedded systems where memory/cpu resources are scarce: in this case just stick to C and dont waste your time reading these blogs

What's all this about Java phones not working right? Android is a completely java-based platform. -- Michael Parks

thats only because of Google's iron fisted approach. They needed to do it so as to ensure app providers only had to develop once to support the many different hardware platforms. This was a marketing decision to aid its bid to catchup to the iOS juggernaut. Its all about standards, even though you may not like the language. However, Android itself is Unix ... and I would argue its actually a C-based platform. To my knowledge, there is no bare-metal platform based on a JRE

Yes, it should go away :-)

View edit of January 7, 2014 or FindPage with title or text search