Results 1 to 17 of 17
  1. #1
    DevzAbhi's Avatar
    DevzAbhi is offline Member
    Join Date
    Jul 2008
    Posts
    67
    Rep Power
    0

    Post Future of Java ??

    These days everybody who is working on Java once in a while had this point to ponder what is the future scope of java.. in what direction is it going and what are the immediate threats to it ...c#,ruby , python etc ..

    please feel free to comment
    DevZ;)

  2. #2
    neilcoffey is offline Senior Member
    Join Date
    Nov 2008
    Posts
    286
    Rep Power
    7

    Default

    I think for now, Java will go from strength to strength, and the "slots" filled by Java and other languages like C#, Ruby won't essentially change that much. People who want a language that has the word "Microsoft" attached to will use C#. People who are preoccupied with making a web form over a database involve as few lines of "program" as possible will probably tend towards Ruby on Rails. People who have read about some great text processing library for Python will continue to use Python.

    But for a general-purpose language that allows you to program on virtually any platform and program most things from a simple UI to a highly concurrent server application, I think Java's going to be mainstream for some time yet.

    At the moment, Java fares quite well at concurrent programming, which is the Next Big Thing that we're witnessing at the moment. For it to be replaced would mean a language with just as rich an API, an equally wide variety of platforms, presumably better parallel programming functionality, the wide base of literature now available on key subjects such as concurrent programming in Java and JVM performance, and an overall "ease of solving tasks" that justified migration. At the moment, I don't see a contender that ticks these boxes.

  3. #3
    DevzAbhi's Avatar
    DevzAbhi is offline Member
    Join Date
    Jul 2008
    Posts
    67
    Rep Power
    0

    Default

    agreed ... and java has made considerable progress in Mobile technology with J2me .. the wide range of API's available for the same is applaudable ... i think this will the main area in which java will progress.
    DevZ;)

  4. #4
    Steve11235's Avatar
    Steve11235 is offline Senior Member
    Join Date
    Dec 2008
    Posts
    1,046
    Rep Power
    8

    Default

    I'm happy that Java is really improving on some weak areas, especially Swing. I stayed away from client development using Java until I was forced into it this year. Swing is still too complicated, but it runs fast and, after a lot of research, it is possible to make a few tweaks and end up with a very nice looking Windows-style application.

    I've been around for several fads (remember Client Server?), and Java has put down deep enough roots that it won't be displaced.

  5. #5
    fishtoprecords's Avatar
    fishtoprecords is offline Senior Member
    Join Date
    Jun 2008
    Posts
    571
    Rep Power
    7

    Default

    Quote Originally Posted by Steve11235 View Post
    I'm happy that Java is really improving on some weak areas, especially Swing.
    Swing has always been a disaster and an afterthought.

    I do not share the outlook for Java long term. I think it has peaked. I expect it will stay popular for a while longer, say 10 years, but its getting long in the tooth. Each new release has features that are compromised by the need for backward compatibility. Generics are the first example, they are ugly and in some cases, nearly impossible to specify -- just because they were added in a decade after the rest of the stuff.

    J2EE was a bad idea from the start, so bad, that they've renamed it.

    The biggest forward looking problem with Java is that it has poor support for multiple processor systems, and today, quad CPUs are cheap, and 16 CPU chips are just down the road. Manually writing threads and Barriers is not good enough. Doing this right is hard, too hard for humans. We need a language that allows the compiler to do the parallel processing without programmer action.

    Another major problem that Java has (shared by a lot of other OO languages) is that we use Relational DBMS packages, which do not work with OO philosophies. So we end up using clanky Object-to-Remational-Mapping hacks. They are ugly at best, and limiting in general. Its just not what we need.

  6. #6
    toadaly is offline Senior Member
    Join Date
    Jan 2009
    Posts
    671
    Rep Power
    6

    Default

    As a general programming language, Java is still the most productive language overall. Except for heavy duty number crunching, its performance is comparable to c++, and exceeds it in many other cases because it's pass by reference.

    It's portable obviously, whereas c# is not. It's *MUCH* faster than scripting languages in general and has as rich default API.

    It has its flaws, but overall is very good. I don't think it's going to be displaced until machines start programming themselves.

    But these types of questions tend to overlook something basic, which is that there is no single language that's a panacea. They each have their role. Software engineering will continue to be a multi-language endeavor for...ever.

  7. #7
    fishtoprecords's Avatar
    fishtoprecords is offline Senior Member
    Join Date
    Jun 2008
    Posts
    571
    Rep Power
    7

    Default

    Quote Originally Posted by toadaly View Post
    As a general programming language, Java is still the most productive language overall. Except for heavy duty number crunching, its performance is comparable to c++, and exceeds it in many other cases because it's pass by reference.
    For serious number crunching, you don't use c/c++, you use Fortran.

    I don't agree with your opinion that Java is "most productive" as I think Perl fans can make a good case. And Python is not bad. But I agree that its very productive.

    But Java's manual thread model is a loser in the world of quad, octo and 16 core systems. IMHO.

  8. #8
    toadaly is offline Senior Member
    Join Date
    Jan 2009
    Posts
    671
    Rep Power
    6

    Default

    Quote Originally Posted by fishtoprecords View Post
    For serious number crunching, you don't use c/c++, you use Fortran.
    The c compilers caught up to Fortran performance a decade ago, but if you prefer Fortran, you're welcome to it.

    I don't agree with your opinion that Java is "most productive" as I think Perl fans can make a good case.
    Anyone can make an argument of course, but productivity experiments have shown Java as the most productive language in recent years.

    But Java's manual thread model is a loser in the world of quad, octo and 16 core systems. IMHO.
    Is there a language that provides automatic threading? I was under the impression that the work being done on that is at the hardware level.

  9. #9
    fishtoprecords's Avatar
    fishtoprecords is offline Senior Member
    Join Date
    Jun 2008
    Posts
    571
    Rep Power
    7

    Default

    Your arguments are all over the map.

    Quote Originally Posted by toadaly View Post
    The c compilers caught up to Fortran performance a decade ago, but if you prefer Fortran, you're welcome to it.
    No one argues that compilers are getting equal, But if you talk about performance in general, including the programmer, tester, and execution time on the hardware, then there is a lot more in the argument than simple compiled code speed.

    Fortran since the 60s has had complex number support, which is critical for many kinds of engineering. One of the arguments for operator overloading in Ada and C++ was that it would allow you to make an invented datatype of Complex, and have it do all the right stuff. i.e. do what Fortran has done for 40 to 50 years.

    But operator overloading has in practice been at best a mixed blessing. Its really hard to get right.

    The other huge advantage that Fortran has is 40 years of development of libaries for serious numerical analysis. You can't do something as simple as inverting a matrix on a computer based on what you learned is the "manual algorithm" and have the results come out as you want, the rounding errors will kill you. So you want to use the libraries.

    I could see trying to make an argument for C++, if we were talking 10 to 15 years ago. But C++ is a failure as a language, IMHO. And in Bill Gates' opinion, which is why .net uses C#, VBasic, etc.

    The Fortran folks have been doing parallel processing for matrix and vectors for ages. That is one of the things that was special about Cray and other "super computers" of 20+ years ago.

    Quote Originally Posted by toadaly View Post
    Is there a language that provides automatic threading? I was under the impression that the work being done on that is at the hardware level.
    Nearly all of the functional languages do. Scala does, and it even uses the Java JVM.

    You really need higher levels of abstraction. Way higher than C or Java. You want to say "this is a 3D world, rotate it by 20 degrees on the X axis, and -35 on the Z axis."

    Hardware can't take an interdependent algorithm that was designed to run sequentially, and split it to use 16 cores. But many functions, such as 3D rotations and scaling, matrix inversion, etc. are easy to just describe to the compiler and have it generate the proper parallel code.

  10. #10
    Steve11235's Avatar
    Steve11235 is offline Senior Member
    Join Date
    Dec 2008
    Posts
    1,046
    Rep Power
    8

    Default

    I'm no expert on thread implementation on multi-core processors, but I can say this for Java. Java relies on the mechanisms of the underlying OS in this regard. That means the virtual machine can be modified to take advantage of better multi-core support as it comes out on different platforms, without having to modify the byte code.

    In all fairness, this provides the same advantage to all late-compile or interpreted languages, in particular, .NET.

  11. #11
    Steve11235's Avatar
    Steve11235 is offline Senior Member
    Join Date
    Dec 2008
    Posts
    1,046
    Rep Power
    8

    Default

    Swing has always been a disaster and an afterthought.
    I totally understand why you say that, and I fully agree, up to Java 1.5. Starting in 1.5, Sun has clearly made real efforts to improve Swing, and 1.6, in particular, 1.6.11, have continued to add features.

    I was forced into Swing programming last year. The application was incredibly slow and awkward. As I delved into it, I found out the reasons were:

    1. The application was poorly written, in general
    2. The previous developers did not understand Swing, in general
    3. Specifically, the previous developers frequently forced the GUI to wait for very long running processes

    As I finished the application, which involved extensive rewriting, I was able to address the more blatant issues. Over time, the application became more and more responsive.

    I then wrote several Swing applications from scratch. My experience with 1.6.11 is that Swing is versatile, able to handle complex tasks, and *very* responsive, even running on an ancient Pentium M processor.

    My other experience is that the learning curve for Swing is 10 times greater than any other GUI development environment, and Swing all but requires that you do it the "right" way, so it's hard to learn as you go.

    All I am saying is this: Swing stunk in the past. Now, it can be made to work well, but the learning curve is huge. But having the capability to write a GUI that can run anywhere is great, especially with the new JNLP technology.

  12. #12
    fishtoprecords's Avatar
    fishtoprecords is offline Senior Member
    Join Date
    Jun 2008
    Posts
    571
    Rep Power
    7

    Default

    Quote Originally Posted by Steve11235 View Post
    Java relies on the mechanisms of the underlying OS in this regard. That means the virtual machine can be modified to take advantage of better multi-core support as it comes out on different platforms, without having to modify the byte code.
    I expect this is true, but there is something going on within the JVM, its a lot less expensive to do threads than it is to use native threads or processes in the underlying OS.

    But that is not my concern. As far as I'm concerned, as long as the JVM properly uses all the CPUs in the hardware, I stop worrying about it.

    My concern is that Java the language puts the responsibility for decomposing activities into parallel, and for synchronizing them back to sequential, on the programmer. This is a hard problem, and one that is over the capabilities of the mass market programmers (here I extend this to all programmers in all languages). Its just too hard to get right.

    With dual core systems, it is only bad that code wastes half the system capabilities. With quad, you waste 75%. With an Octo, you are barely using any of the speed your customer paid for.

  13. #13
    Steve11235's Avatar
    Steve11235 is offline Senior Member
    Join Date
    Dec 2008
    Posts
    1,046
    Rep Power
    8

    Default

    I think we are on opposite sides of the same mountain peak. I agree that business application developers cannot be expected to write code that explicitly handles multiple processors or CPU's. That is the responsibility of the underlying OS and its scheduling mechanisms. At a minimum, I would expect the use of threads to allow the OS to do that currently, but I don't know...

    My only point is that, as OS support arrives for multi-core, it will require code compiled to take full advantage of that support. Something written in C++ has to be recompiled, at a minimum. Because Java's JVM interacts with the OS, the JVM will need to be modified and recompiled. But that's better than recompiling all your .class files. I expect Sun will keep the JVM up to speed as the technology matures.

    I also grant that directly interacting with the OS will produce faster running code. By nature, Java is inefficient. The gain is platform independence.

    I spent a lot of time working on the AS/400, which is where I think Sun got the idea for a byte code layer. I've used programs running as native 64-bit RISC code that started their lives 30 years earlier on a 48-bit CISC System-38. That sounds dumb, until you consider the return on investment. Java provides a lot of investment protection for very large applications.

  14. #14
    toadaly is offline Senior Member
    Join Date
    Jan 2009
    Posts
    671
    Rep Power
    6

    Default

    Quote Originally Posted by fishtoprecords View Post
    You really need higher levels of abstraction. Way higher than C or Java. You want to say "this is a 3D world, rotate it by 20 degrees on the X axis, and -35 on the Z axis."
    You can do that in Java with the Java3D API or JOGL (and for 2D worlds, you can do that with the Java2D API). But suppose you wanted to write a *new* algorithm that there isn't already library support for in Scala (or whatever language). So you go off and write some sequential algorithm. Are you saying that Scala will figure out how to multi-thread that for you?

    Quote Originally Posted by fishtoprecords View Post
    Hardware can't take an interdependent algorithm that was designed to run sequentially, and split it to use 16 cores.
    Experimental architectures being developed are able to do this.

  15. #15
    ashton is offline Member
    Join Date
    Jan 2009
    Posts
    31
    Rep Power
    0

    Default oh well

    oh well, i am just a simple noob to java but i really think this is a very powerful language, I'm just a 5th year Filipino highschool student (we only have 6 grades in primary education here in the Philippines), but event though I'm just a kid in this kind of language, even though Java looks so complicated, and can even make you scratch your brows most of the times, we can still see it's power all around. You can see it's applications running on computers, internet, cellphones, i-pods, and all that program-related kinda stuff.

    Having a future with java, occupation-wise, if your heart is really into this kind of language, and really into this kind of work, you can find a seat on any field.

    Since it is the fact that it is widely used, i really think, Java can be a good choice for programmers. I know i don't understand Java in a broad range yet, but seeing the news? or articles? or newspapers? I always see the name "Java" almost anywhere, and seeing new features almost frequently.

    I know that there are many languages out there that are also powerful but, Java has become the broadest language in my view.

    All of us know that there is no perfect language. But I really believe, Java has taken the highest step of a stair case.

  16. #16
    Steve11235's Avatar
    Steve11235 is offline Senior Member
    Join Date
    Dec 2008
    Posts
    1,046
    Rep Power
    8

    Default

    The previous two posts make good points.

    For one, Java, through supplied frameworks, can do a lot of complicated things without the developer writing code. But that's not the essence of Java. Java is designed to allow developers to implement the tough code.

    Fourth generation languages (4GL's) provide a great deal of abstraction for rapidly performing routine tasks. I've heard a lot about Ruby, and it fits that mold. People use it because they can do a lot without having to climb a steep learning curve.

    But I doubt anyone will ever use it to create a truly complex business application. There's always room in the development world for different kinds of languages, because none of them can do everything with little effort.

    I think Java is very widely adopted. I see a lot of American businesses trying to move everything to .NET, but Java is still preferred for heavy listing by companies like Oracle and SAP, along with their proprietary languages.

    I will say that if you really know Java, you can learn other languages easily.

  17. #17
    JVposter is offline Member
    Join Date
    Feb 2009
    Location
    Romania
    Posts
    11
    Rep Power
    0

    Default

    Quote Originally Posted by DevzAbhi View Post
    These days everybody who is working on Java once in a while had this point to ponder what is the future scope of java.. in what direction is it going and what are the immediate threats to it ...c#,ruby , python etc ..

    please feel free to comment
    hello!

    Java became to powerful and has allot of service has suport for anything and also has portability ! It it the most powerful, portable and secure language!

    regards,

Similar Threads

  1. How do I strip down integers for future manipulation?
    By frasifrasi in forum New To Java
    Replies: 12
    Last Post: 06-14-2008, 03:17 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •