Win a copy of Terraform in Action this week in the Cloud forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • Paul Clapham
  • Ron McLeod
  • Liutauras Vilda
Sheriffs:
  • Jeanne Boyarsky
  • Rob Spoor
  • Bear Bibeault
Saloon Keepers:
  • Jesse Silverman
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
Bartenders:
  • Piet Souris
  • Al Hobbs
  • salvin francis

Death of Java, film at 11

 
Rancher
Posts: 4686
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I've been posting for a long time that I think Java's popularity has peaked. I like it, and use it professionaly daily, but Java is showing its age. I think we need a next generation Java, as I don't think we can keep the basis of the current syntax and just add on features, look at how ugly generics are. But the biggest problem with Java is that it doesn't reflect current technology trends.

Specifically, breaking Java applicaitons to run on multi-core CPUs is far too much work. Its hard, and error prone. The manual threading concept is just not the solution (altho if you do need it, get Henry's excellent book).

My two latest computers both are quad core. AMD has announced a six core chip, and everyone can see that 8 and 16 core cpus are near.

A bit step into making Java obsolete was recently announced: a 100 core CPU

here is a link
Tilera 100 CPU chip

They have already ported key Linux applications to use it:
"It has ported certain Linux applications commonly used in servers, like the Apache Web server, MySQL database and Memcached caching software, to the Tilera architecture. "

 
Marshal
Posts: 26914
82
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Here's a link to Tim Bray's log where he writes a series of half a dozen posts about that. The main post I linked to there, and five others which it links to. The main post agrees with you -- i.e. it's easy to break up a web server into as many threads as you like, but not easy to break up an arbitrary application program. And yes, the tools in basic Java are extremely difficult for ordinary human beings to use.

The other conclusion I drew from that series of posts is that the new messiah isn't here yet.
 
Paul Clapham
Marshal
Posts: 26914
82
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Let me post a bit of opinion here next: I'm an application programmer. I don't want to have to deal with all that threading stuff just to get the accounts payable balanced. So anything which abstracts that away, whether into special classes like java.util.concurrent or into database servers, is fine with me.
 
Ranch Hand
Posts: 10198
3
Mac PPC Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Pat Farrell wrote:I've been posting for a long time that I think Java's popularity has peaked. I like it, and use it professionaly daily, but Java is showing its age. I think we need a next generation Java, as I don't think we can keep the basis of the current syntax and just add on features, look at how ugly generics are. But the biggest problem with Java is that it doesn't reflect current technology trends.

Specifically, breaking Java applicaitons to run on multi-core CPUs is far too much work. Its hard, and error prone. The manual threading concept is just not the solution (altho if you do need it, get Henry's excellent book).

My two latest computers both are quad core. AMD has announced a six core chip, and everyone can see that 8 and 16 core cpus are near.

A bit step into making Java obsolete was recently announced: a 100 core CPU

here is a link
Tilera 100 CPU chip

They have already ported key Linux applications to use it:
"It has ported certain Linux applications commonly used in servers, like the Apache Web server, MySQL database and Memcached caching software, to the Tilera architecture. "



So what do you think is the next new thing other than java?
 
Pat Farrell
Rancher
Posts: 4686
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Jothi Shankar Kumar wrote:So what do you think is the next new thing other than java?



I have a really hard time making predictions, especially about the future.

I think it has to be somewhat Java like in syntax, not the big jump that it would take to go to smalltalk or lisp.

Clearly it has to be less procedural, because its the code like

for (Thing t : listOtThings) {
// do something
}

that is essentially sequential, and thus not applicable to multi-core

Thus you have to have some sort of

For all listOfThings(dofunction)

 
Pat Farrell
Rancher
Posts: 4686
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Paul Clapham wrote:I'm an application programmer. I don't want to have to deal with all that threading stuff just to get the accounts payable balanced. So anything which abstracts that away, whether into special classes like java.util.concurrent or into database servers, is fine with me.



Not really, no one want to deal with this stuff. The "java.util.concurrent" are tools that let you manually write code to do the multi-threading. Not at all what you want.

Consider that you have a List<transactions> and you want to apply them to the AccountsPayable class. Today, you write something like:

for (transaction t : listoftranactions) {
apply tranaction
}

what you need is to be able to say

With listoftranactions, apply transaction

and let the JVM or compiler decide if it should do them sequentially or split the list-o-transacetions into 100 sublists and do them in parallel.

SQL is an interesting example, it is non-procedural. You say "select * from tranactions where field = x and other = y" and you get back a set. You don't care if it was done sequentially or in parallel. A lot of SQL errors are because programmers think sequentially and SQL makes no guarentee of order.
 
Bartender
Posts: 9626
16
Mac OS X Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Paul Clapham wrote: the [multithreading] tools in every programming language are extremely difficult for ordinary human beings to use.



Fixed that for me.
I'm not losing sleep over multicore cpus. I do mostly web apps, and my Solaris servers have had multiple cores for eons.
As for multiple cores on the desktop, how many cores can one effectively use at one time? The desktop apps I've made have used a handful of threads at most (not including the JVM, of course).
 
Pat Farrell
Rancher
Posts: 4686
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Joe Ess wrote:

Paul Clapham wrote: the [multithreading] tools in every programming language are extremely difficult for ordinary human beings to use.

.



Yes, on the multi-threading tools, and yes on "extremely difficult for ordinary" professional software developers. Its just too hard.

Joe Ess wrote:I'm not losing sleep over multicore cpus. I do mostly web apps, and my Solaris servers have had multiple cores for eons.
As for multiple cores on the desktop, how many cores can one effectively use at one time?



I haven't written software to run on a desktop for at least a decade. I'm not too worried about the desktop.

But I disagree on your comment about multi-core servers. Sure, I've got two dual-Xeon server systems sitting on a shelf in my basement, too obsolete to plug in. The relational DBMS packages have handled multi-cpu systems for at least ten years, again, because SQL is not sequential. And if you run the DBMS, a webserver, backup services, DNS, DHCP, all at once, which is typical of servers, then using 8 cores for the DBMS and one each for the rest is a nice way to go.

But I believe that there is a big difference between having a handful of CPUs and scaling to 64 or 128, and that is clearly on the horizon. We will need application level parallelism.

The problem is that Intel and AMD simply can't design faster single cores. Perhaps they could make them ten times faster, but its far more cost effective to have ten or twenty times more cores.

When I bought my first PC in 1990, I got 4MB of RAM on it, and all my friends thought I was nuts, wasting money, how will you every use all that much memory. Today, every Windows machine needs a gigabyte of RAM, and many have 2 or 3 GB. Yet no one complains that their computers are too fast.
 
Joe Ess
Bartender
Posts: 9626
16
Mac OS X Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Pat Farrell wrote:We will need application level parallelism.



Perhaps we are moving in that direction via virtualization (VMware/VirtualBox/Xen/Solaris Zones). Take a big CPU and memory space and separate it into nice little slices for each independent OS/DB/App stack.
 
You showed up just in time for the waffles! And this tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
reply
    Bookmark Topic Watch Topic
  • New Topic