Guest View: Java + multicore = good news



Email    print   
October 15, 2008 —  (Page 1 of 4)
Dual-core processors are ubiquitous in desktop computers and laptops today; four to eight cores are common in servers, and within the lifetime of the next version of the JDK (Java 7), we are likely to see servers with dozens of cores become available in bulk.

Moore’s Law has given us unimaginable increases in computing power for more than over a generation. But a few years ago—as CPU thermal densities approached that of a small furnace—the strategy of cramming ever smaller transistors on chips that run at ever increasing frequencies seemed destined to hit a wall.

So chip designers pulled a new trick out of their sleeves: They leveraged the increasing transistor densities to fit more cores onto a single chip. While Moore’s Law continues to fit more transistors on chip, it is no longer a given that each new generation of CPUs will automatically run our existing algorithms faster.

It is now up to us to ensure that our code is ready to take advantage of the new generation of multicore CPUs. Our current theory, algorithms, languages and tools have all evolved around the sequential paradigm. The move to a truly parallel world will be a fundamental shift.

At first glance, the task of parallelizing our applications looks no different from multithreaded programming. The Java language is widely praised for having a simple yet powerful threading model that makes writing effective multithreaded applications mainstream. It may therefore seem likely that the ease of writing multithreaded applications will enable us to surmount the challenge of writing multicore applications, but in practice it may not be so easy.

The canonical multithreaded application in Java (such as the Web or application server) processes multiple users or connections concurrently, in multiple threads. That architecture is not only well understood, it is also very well supported by underlying frameworks, whether Web or application servers, to the extent that the average programmer hardly has to think about this issue. The complex tasks for thread pooling and scheduling are efficiently handled, and effectively hidden, by the framework. All we need to do as application programmers is write out servlet or Enterprise JavaBeans on the correct template, and we’re good to go.



Related Search Term(s): Java, multicore, software development

Pages 1 2 3 4 


Share this link: http://sdt.bz/32943
 
Most Read Latest News Blog Resources


Comments


02/11/2009 10:09:50 AM EST

Multicore servers will face the demands of developers to replace network/LAN traffic by in-machine messages. So they will have to offer fine tuning tools for process and resource communication and prioritizing which are machine specific and OS native. Please understand that I am sceptical when we talk about Java using these interfaces as long as I do not see a valid USB library - maybe I missed there sth actual but the problems there where impressing me deeply. I think forking/unforking is only part of the problem and definetely the article does NOT describe a Java specific advantage through technology.

Germanythomas wellbrock


02/11/2009 03:45:21 PM EST

Avik Thanks for the article. It's interesting to see the Java fork/join, and contrast it with the Erlang approach. One question and one comment: Do you think Fibonacci is a good candidate for parallisation? Essentially you are doing almost double the processing effort to compute any given Fibonacci number, since the previous result is not re-used as per dynamic programming. I.e. the 2x speedup can be gained by using a better sequential implementaion. Putting aside the issue of the suitability of the Fibonacci example, I think some readers would be interested to see an Erlang solution to a parallel Fibonacci problem. It uses a parallel map implementation that I've mentioned here: http://21ccw.blogspot.com/2008/05/parallel-quicksort-in-erlang-part-ii.html, which is about 12 lines of code. And the implementaiton (without the threshold support): p_fib(0) -> 0; p_fib(1) -> 1; p_fib(N) -> [F1, F2] = pmap:pmap(fun p_fib/1, [N-1, N-2]), F1 + F2. Which basically maps a function over a list, and the function is evaluated in a separate Erlang process (NOT related to OS processes). To me this is a much simpler (and hence more reliable solution). YMMV Benjamin

United KingdomBenjamin Nortier


Add comment


Name*
Email*  
Country     


  • Comment
Loading




close
NEXT ARTICLE
News Briefs: July 15, 2008
Enea is named to the board of CP-TA, Teradata introduces a new version of its data warehousing tool and SOA Software upgraded its Repository Manager to accommodate its Policy Manager software Read More...
 
 
 
 
News on Monday
more>>
SharePoint Tech Report
more>>


   

 
 

Download Current Issue
FEBRUARY 2012 PDF ISSUE

Need Back Issues?
DOWNLOAD HERE

Want to subscribe?


 
blogs tab
GitHire: Use Headhunters to Find Your Perfect Programmer
Are you a hiring manager tired of scouring the job boards? Check out this new service that will find 5 people interested in your jobs.
02/03/2012 12:17 PM EST

Facebook claims hacker cred
Facebook's SEC S-1 filing form includes a short essay on the Hacker Way by Mark Zuckerberg himself.
02/02/2012 08:26 AM EST

Ryan Dahl steps down
Ryan Dahl, creator of Node.js, steps back from his position as gatekeeper for the project.
02/01/2012 04:58 PM EST

Bloomberg opens its API
Bloomberg's APIs could lead to a future standard for accessing market data.
02/01/2012 04:41 PM EST

The case for piracy
In the aftermath of SOPA and PIPA, some copyright holders have begun to embrace piracy as inevitable...and even beneficial.
01/30/2012 02:39 PM EST

Tablet sales boom, but applications lag
The installed base of tablet computers and e-book readers is growing rapidly, but no killer app has yet emerged -- hint, hint.
01/28/2012 05:48 PM EST

 
Events calendar tab
2/13/2012 to 2/16/2012
Santa Clara
TechWeb

2/26/2012 to 2/29/2012
San Francisco
BZ Media

2/27/2012 to 3/2/2012
San Francisco
RSA

3/4/2012 to 3/7/2012
Las Vegas
IBM Tivoli

3/5/2012 to 3/9/2012
San Francisco
TechWeb