P.S : For effective navigation, please use the CATEGORIES on the right pane

Sunday, July 25, 2010

Is Java Dying ???

       Though many projects still continue to be developed using Java, some analysts predict that the language is already dying, especially in the SOA world. SOA emphasizes interoperability more than cross-platform deployment, and the analysts say that Java EE is ill-suited for this (despite the existence of efforts such as Project Tango to directly address this.)
        Lets try to separate fact from fiction in this discussion. Only a small percentage of developers go to conferences like JavaOne. These people constitute the majority of those who read, write and comment on blog sites and they are the first-adopters of new technologies and languages. These people are enthusiastic evangelists of new and cool technologies fueling, for example, the rise of Dynamic languages (which I applaud). But these same folks can be vocal complainers, ignoring possible work-arounds of existing features in languages such as Java, and predicting the death of Java. For many developers, these dire predictions can inspire fear for their jobs, compelling some to prematurely drop Java, further perpetuating the rumor that Java is indeed dying.
       It is impressive that Java has been consistently popular for over 12 years (Ruby was created in 1995, but only really became popular once David Heinemeier Hansson released Ruby on Rails in 2004). In our industry it’s impossible to predict how something will be used in a decade and maybe we shouldn’t try. Have Sun got carried away with the popularity of Java and tried to make it into something it wasn’t designed to be, creating an overly complex beast? Are these proponents of Java-Death simply Java gurus that who are just seeking perfection?
So here are a few facts:
  • The JavaOne Program Office announced that there were around 15,000 attendees at JavaOne this year. (There was also a lot of negative discussion regarding JavaOne, but this criticism was really about the show rather than Java–see my comment on Jason Lee’s: Postmortem on JavaOne 2008)
  • One of the most impressive announcements at JavaOne was that Sun have made a 68% performance increase running Java 5.0 against Java 6 update 10. On the same hardware (showing their commitment, at least, to the JRE)
  • Released only last month, Effective Java 2nd Ed by Josh Bloch is ranked #291 of TOTAL book sales at amazon.com and #8 in the Computers & Internet sub-section
  • Without too much analysis (i.e. just typing in the following keywords in Dice.com) current vacancies for the following are:
            Java     15,337
            Ruby    818
            C++      7,633
            C#        7728
            Python  1,395
            Perl     5,463
            Cobol  1,131
            Assembler 196
       So we haven't seen the last breath of Java yet. But, I would like to highlight on few other technologies that are really making tables turn.
       Haskell (pronounced /ˈhæskəl/)[2][3] is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen"[4] of the programming language. As a functional programming language, the primary control construct is the function; the language is rooted in the observations of Haskell Curry[5][6] and his intellectual descendants,[7][8] that "a proof is a program; the formula it proves is a type for the program". An open source product of more than twenty years of cutting edge research, it allows rapid development of robust, concise, correct software. With strong support for integration with other languages, built-in concurrency and parallelism, debuggers, profilers, rich libraries and an active community, Haskell makes it easier to produce flexible, maintainable high-quality software.
       Erlang is a general-purpose concurrent programming language and runtime system. The sequential subset of Erlang is a functional language, with strict evaluation, single assignment, and dynamic typing. For concurrency it follows the Actor model. It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications. The first version was developed by Joe Armstrong in 1986.[1] It supports hot swapping, thus code can be changed without stopping a system.[2] Erlang was originally a proprietary language within Ericsson, but was released as open source in 1998.
       To demonstrate the usage of Erlang , lets consider an example of the Quick sort program :

%% quicksort:quicksort(List)
%% Sort a list of items
-module(quicksort).     % This is the file 'quicksort.erl'
-export([quicksort/1]). % A function 'quicksort' with 1 parameter is 
exported (no type, no name)
 
quicksort([]) -> []; % If the list [] is empty, return an empty list 
(nothing to sort)
quicksort([Pivot|Rest]) -> 
    % Compose recursively a list with 'Front' for all elements that should 
    %  be before 'Pivot'
    % then 'Pivot' then 'Back' for all elements that should be after 'Pivot'
    quicksort([Front || Front <- Rest, Front < Pivot]) 
    ++ [Pivot] ++ 
    quicksort([Back || Back <- Rest, Back >= Pivot]).
 
(And that's the whole program!! This definitely will be longer if coded using 
the C family) 
The above example recursively invokes the function quicksort until nothing 
remains to be sorted. The expression [Front || Front <- Rest, Front < Pivot] 
is a list comprehension, meaning “Construct a list of elements Front such that 
Front is a member of Rest, and Front is less than Pivot.” ++ is the list 
concatenation operator.
The programmers usually mention that the ease of the language greately 
arises because of the use of lists and not data types like int, float, etc. 
This means that the above program can work on any list of data, thereby 
eliminating type mismatches. 
Also, as you can notice, the program mainly contains expressions and the 
programmers give credit to the compiler because the syntax of the language is such 
that its highly impossible to frame an expression that is intended to do something,
but ends up being evaluated in another way. This eliminates the logical errors 
that can outrage the programmers in a large project. Erlang has already been used 
by Ericsson in many projects and has yielded successful results.        

2 comments:

  1. Blog Is Cool Now. Looking Good. You can Add Many More Gadgets As Well As Make Much More Attractive By Using Themes Suiting To Your Posts!!!!!!!

    ReplyDelete

Your feedback is valuable: