Jump to content

Recommended Posts

Java might have it's flaws, every language does, but without Java, internet and computing in general would not have been where it is now, it would not advance as fast as it did.

That's a bad assumption.  If there's a market, someone will do it.  There are plenty of non-Java languages that could have filled the role(s).  I'm not knocking Java here, so much, simply as being pedantic about the assumption that for some reason the internet benefitted uniquely from any programming language in particular.


This in my view is a real-programmers statement (spun off of the real-men folklore). While the intention might be good, the real-programmer culture is basically the geek/nerd version of macho behaviour. A better implementation is [insert trendy thing here].

I found this post from 1982 that I thought was funny (http://www.multicians.org/thvv/realprogs.html).


In my opinion, a good software team is one that has plenty of "real-man" programmers, although I don't care as much about the macho thing as I do about willingness to pull 30 hour days and extreme pride in the work.  Every few years, some big corporation invents a new work model for programming.  I've seen dozens.  The point is to make money selling tools, seminars, books, etc.  The problem with all of these is the same: it is impossible to make good software without good programmers.  I view Java as a tool that encourages bad programmers to work as programmers, and to write code that cannot as easily be refactored, later-on, as it could be with non-OO models.


On Dalvik: I was happy that someone did it, and I was wondering if someone finally managed to build a non-crap implementation of Java.  At the end of the day, it seems like Dalvik is not especially better than the stack-based VMs are, and it is indeed contributory to Android's greatest weakness: energy use.


On this topic in general: I enjoy discussing these things, but all I really meant to re-inforce is the fact that any CS program is going to have sections on stacks, logic, data types, etc.  C programming experience is a good way to learn these things, especially embedded C (on a Launchpad, for example).  Since the topic-creator was motivated in large part to help his son studying CS, I suggested that C is worth the time.


Plus, I hate Java.  :)

Link to post
Share on other sites

In my opinion, a good software team is one that has plenty of "real-man" programmers, although I don't care as much about the macho thing as I do about willingness to pull 30 hour days and extreme pride in the work.

Yep, that'd be "the macho thing", right there: hack something together in a last-minute marathon then present yourself as a hero.

Link to post
Share on other sites

Yep, that'd be "the macho thing", right there: hack something together in a last-minute marathon then present yourself as a hero.

I realize that, but most of the high points in engineering seem to happen this way -- insane dedication by a small number of engineers (or just one).  It is proven and time-honored.  [insert trendy model here] is not.

Link to post
Share on other sites

Regarding this: "Java probably isn't the best choice on a "strapped for memory" embedded system." 


Going way back to when Java was introduced, it was supposed to "run anywhere". And don't lots of cell phones use it? 


Has Java suffered from mission creep, to the point that it's now too bloated to use on small systems? I read a comment by one cynic who said that the language is so huge that people spend half their time reimplementing features that are already in the language, but they just don't know it. 

Link to post
Share on other sites

I am not going to argue about opinion, but I will give a little of the background.


Java was designed on essentially religious principles: To be a PURE OO language, 100% self consistant, no compromise. It didn't make it... even 1.0 had features that broke the paradigm. There are more now.


The OO model is not ideal for everything. The purists worked from the belief that it is. For application where the model IS appropriate (there are many), and portability across platforms is needed, Java isn't a bad choice. For network delivered, heavyweight applications, Java is a pretty good fit, as the object model Java uses allows for unambiguous, automatic chunking of an application, with parts loading as needed. No bandwidth use for unneeded parts.


Much early dev  for dynamic network delivery was LISP/Scheme -- I had some friends in this when I was still hanging around MIT -- but the first good turnkey tool was Java. There are others now, but they all have some significant flaws comparable to Java. In my opinion, the flaws are inherent to the model.


Java took off in the mid-90's due t a number of things, but I tend to believe it was 1) a combo of it being the first purpose-designed, ground up developed OO language that wasn't a toy, and 2) zealotry about the OO model at the time. The fairly natural support for network delivery was also a factor, but I don't tend to think of it as the major one.


Benefits to the OO model are  the compartmentalization of data and tying functions to the data tightly. The Java model provides the ability to insure type safety and access control fairly well.


The biggest drawback to the OO model are the hidden interactions and cumbersome access methods that come from tying functions tightly to data and the compartmentalization of the data.


Debugging a large Java application is a beast. Well designed objects make it a lot easier. Poorly designed objects make it impossible. Java enforces nothing that isn't generally good practice anyway in a large system, but makes it impossible to avoid the cumbersomeness in a small system. Poor programmers can still produce crummy code, but Java does block some of the worst issues that tend to show up in C++.



I am obviously not a fan of Java as the end-all of programming. It is big, slow (Gee... I think that may tweak a few people...), has crummy numeric support (lets tweak a few more...) and is bloated. On the other hand, for applications that need dynamic distribution with no extra load on the programmer, need large suites of standard tools, or need to run on multiple platforms and generally not know the difference between them, it is a pretty good tool.

Link to post
Share on other sites

There are obviously a lot of feelings around Java, and it's not hard to see the two camps that we've split into here.


So here's my conclusion on the entire thing:


If you want to learn Java then just write Java and run it on something that makes sense.  MSP430's and Java don't make sense.  The wonderful, excellent, most helpful super great parts of Java really won't help you at all in a micro, and the not-completely-great bloated parts will make life miserable, where the idea is to be close to the hardware instead of completely abstracted away from it.


And (IMHO) once you've endured the misery, you'll have experience that is more or less as useless in the embedded world as it is in the corporate application world....


Or maybe I'm just a grouch....

Link to post
Share on other sites
  • 1 month later...
  • 4 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...