This thread seems to be 5 or 6 years old. Also see BeyondJava for a more current take on some of these issues. ---- Thanks to the recommendation of JohnVlissides I've been asked to speak to a customer this week on the FutureOfJava. I have some thoughts of my own, mainly on enterprise Java and the evolution that will take, but I'm interested in what the rest of the Wiki community has to share. KyleBrown ''What year is '''this week''' referring to?'' * On or before Oct 29, 2000; it's old. ''Is KyleBrown or JohnFarrell or MartinPool or ... still come here? I would like it updated or archived or deleted by people in the know. Unless there are other reasons to keep this page and '''evolve'''. --dl'' ---- My guesses, not particularly astounding, are: * bigger class libraries, including multimedia * better performance, particularly on multiprocessor machines * used on all sorts of machines, from fridges to supercomputers * the standard language for teaching at universities * JINI becomes really popular, but not necessarily for what it's being touted for * RMI adopts CORBA style services, and overtakes CORBA. CORBA used mainly for talking to legacy systems. --JohnFarrell ---- I think Java will fill a social space similar to that filled by C these days: * not as good as it might be, but much better than it could have been * wide support from libraries, platforms and tools * suitable for many applications, not always the most appropriate tool, but used anyhow because it's a safe decision * programmers need not be brilliant to work effectively, but it won't be the best tool for non-specialists or beginners -- there may be other languages in that space (BASIC, JavaScript, ...) * there will be minority languages used by the enlightened few but never taking over the mass market (Smalltalk, Python, ...) * perhaps elegant high-level languages will actually not be confined to the minority, but will lead to ProgrammingForEveryone I agree with John on the other points, and note that all of his points have come true for C in the last decade or two (Substitute 'dll' and 'sockets' for 'jini' and 'rmi/corba'). -- MartinPool ---- Rather than ''not as good as it might be, but tolerable'' I'd be tempted to say ''much better than could be expected - and C/C++ and VB were certainly expected''. This is looking back to 1995 say, when to the regret of many of us Smalltalk hadn't reached sufficient critical mass commercially (for various reasons) and it looked like we were going to be caught between this rock and a hard place in building business systems for many customers. I agree that wide acceptance of languages like C and Java is in the ''social space'' rather than a narrow technical one. But then I think it's fair to regard the whole of software development since the 1950s as a ''social experiment'' - with some major results due back at the end of this year ''(1999)'' as I remember. One important trend we see at the moment is major corporates standardising on Java for all new ''serious'' software development. One major insurance company near us has taken this step and only has some small IBM assembler developments left that aren't Java. The benefits in training and moving staff between different projects haven't been emphasized enough, in my view. Java is seen as ''good enough'' as a standard language for the future in these companies. I think that we should face this fact and be pretty grateful for how Java has cleaned up on C++. However, I said ''serious'' software development above - meaning projects where all the development is done by specialist programmers. Java is '''not''' (except maybe in the JSP context) going to be successful as a language for end users (the VBA space if you like). We'd much prefer such a language to be one that can also be used with productivity and even joy by professionals. That's why I think it may be much too negative to say ''Smalltalk, Python will only be minority languages ...''. It may be especially misleading to say ''only used by the enlightened few''. I'm arguing in fact that the unenlightened masses (from a computer science point of view) may be the biggest reason for this type of language. But I admit that ''that's'' currently a tiny minority view! See SeriousVersusScriptingLanguages. --RichardDrake I would like to agree with RichardDrake, but think he's a bit optimistic. Ugly and wasteful solutions often win. -- MartinPool The rise of the Internet is one force that is (on balance) cleaning up our act. Java and Perl (at least less ugly and wasteful than what went before?) have only been able to make a major global impact because of the Web. The time to market pressures in ecommerce continue to provide EconomicIncentiveToDoSoftwareBetter. People worldwide are fed up of LousySoftware. Don't give up too easily, I need that agreement! Why do ugly and wasteful solutions often win? As pointed out above many people are choosing Java, but, in my neck of the woods at least, many people are making strategic commitments to Microsoft and VB for what for them is ''serious'' software development. WhyChooseMicrosoftAndVb? ---- I doubt very much that RMI will adopt CORBA-style services and try to overtake CORBA. RMI strikes me as a deliberate attempt to deliver a simple framework that handles a lot of the common cases gracefully. Activation is designed the same way (Waldo et al wrote a Sun tech report on Activation in 1995 that spells the philosophy out). I'd guess RMI's going to get faster and leaner. And that it will get those much needed bug fixes. Beyond that, I'd guess that, by and large, RMI's baked and the distributed brainpower at SUN is moving to JINI, EJB, and points west. The big important change in Java-the-language, from my point of view, is going to be the adoption of a template mechanism. The period for public comments is over, templates will be here soon, and my-goodness, I'm all a-tingly with anticipation. ''Templates only came into existence because of primitives, which screw up OO. But there are more OO-like solutions to these problems, and allowing primitives to force the creation of a redundant mechanism is a case of WagTheDogAntiPattern.'' -- TomRossen The big change in Java as used by programmers is going to be the emergence of serialization and mobile code in routine coding. Once programmers start to do things like hot updates (reloading a changed .class file while the server is running), they seem to get the generalization (and when I've taught RMI lectures, and explained how mobile bytecode works, people immediately see the generalization and start saying things like "Hey. I could use this for ..."). I've already seen a few simple projects where (real-world example) a query object is sent to a server and a serializable TableModel is returned. While I don't particularly like this (I like sending query objects, the serializable TableModel coming back is pretty awkward), it seems clear that a lot of programmers are starting to understand what platform-independence buys them. ''Unless Sun (or a third party) cleans up its serialization act (take a look at the incredible source of Object''''''Input''''''Stream, which I tried to refactor until it drove me round the bend) and allows for object pooling instead of forcing allocation on deserialization, this won't happen.'' -- TomRossen I also think the use of EmbeddedDatabase-s is going to skyrocket. Every time I look at them, I start drooling. Not because I have a compelling new application that requires them, but because I think they make a lot of currently-complex tasks a little easier. It's going to require a mindset-change on the part of a lot of developers (using an RDBMS for persistent data is a lot different from using an EmbeddedDatabase within an application for non-persistent data), and it's emphatically a step away from OO onto a much more declarative path, but I think the potential is mind-blowing. WilliamGrosso ---- ''I doubt very much that RMI will adopt CORBA-style services and try to overtake CORBA.'' Actually they're making them interoperate. EJBs will be CORBA objects and will be able to interoperate with other CORBA applications see: http://java.sun.com/products/rmi-iiop/ ''When I said CORBA-style services, I meant things like COS Trader, and I claim that JINI is exactly that sort of thing.'' ---- ''The big important change in Java-the-language, from my point of view, is going to be the adoption of a template mechanism. '' Do you mean: GenericProgramming ? The discussion of GP on the JavaDevelopersConnection shows that one of the biggest objections to GP in the Java community has been the inability of most commentators there to distinguish between GP ''qua'' GP and C++ templates. Maybe that tells us something about the Java community? ----- Sun's "revolutionary" idea was to swap out the old dictator (Microsoft) with a new one (Sun Microsystems). --Jesse Berst ''Read the rest in How Open Source Could Save Java (And Why It Probably Won't) -- AnonymousDonor'' http://www.zdnet.com/anchordesk/story/story_4306.html Jesse doesn't say much to back this up. I think he's just echoing peoples fears without putting much thought into it. It is my belief that Sun's strategy is to use Java to level the playing field. So that instead of knocking the king of the hill off in order to replace him they are trying to bulldoze the hill itself. This makes sense for Sun because they believe that they have a superior OS that runs on superior hardware. ScottMcNealy believes that in the end there will be a fairly small number of hardware vendors with comparable market shares -- sort of like the automobile industry. If I thought that Sun was trying to become the new dictator I wouldn't work for them. The reluctance of Sun to turn Java over to a standards body has many people concerned. But I think that concern is misplaced. The only way that Java can do what Sun needs it to do is if the standard can evolve quickly and if it doesn't allow incompatible implementations of the language. Standards bodies in general aren't quick and two of the most powerful members of any credible software standards body (Microsoft and IBM) both have a vested interest in introducing incompatiblities into the language. So it should come as no surprise that Sun has been frustrated in its efforts to obtain a timely ratification of Java as a standard, portable, language. I think that might be a bit unfair on IBM (not that they can't take it :) -- they certainly haven't tried to introduce any incompatibilities so far, and have put a lot of effort into supporting ''production'' use of Java, as opposed to Sun's continual racing ahead with the latest (buggy) VMs and libraries for developers to download. The recent spat about J2EE support came down to this issue as well, plus some political posturing about standards issues in general. --RichardEmerson ----- ''[Very strong anti-Sun post was here, but it was later retracted.]'' ''[...]'' I'm not going to accuse you of being in their pocket. I have a different point: Have you ever worked with languages, APIs, or protocols that were under the control of a traditional standards body? Especially when those standards were still evolving? You may have --- I don't know --- but if you haven't, then you almost certainly don't understand all of the issues. I don't have any connection to Sun, and never have. While I hope Java will eventually be an independent standard, I'm glad that Sun is in control for the moment. As a Java developer, I trust them to meet my needs much more than I trust a standards body. Much of what Sun has done recently bothers me. They do seem to be excessively sensitive about opening up Java in several ways. I have friends whose livelihood comes in large part from an inexpensive Java IDE, and they feel pretty threatened right now. I grow weary of much of ScottMcNealy's rhetoric. They seem to be letting their lawyers drive things in direct contradiction to their stated plans and objectives. But I'm nevertheless curious about something. Can you name another company that developed a technology as hot as Java that has made less money from selling it? This (and several other things) makes your conclusion less than obvious to me. (Oh, and I don't think it's logically possible for documents to show that anyone did anything in good faith.) --GlennVanderburg ''[A few comments posted here were later retracted.]'' ''I'll go along with the image of Sun as a benevolent dictatorship over Java -- except for the emergence of EJB, which I think is an attempt to recreate the mainframe for the benefit of big vendors like IBM.'' -- TomRossen ''I'm still less willing to condemn Sun for the situation, but I'm not exactly on their side, either. I will point out, though, that neither HTML nor XML were developed by traditional standards bodies like the ISO and ECMA. They've been trying to change, but in my experience they're much, '''much''' worse than the W3C.'' ''And you've just clarified for me another reason why Sun should eventually take themselves out of the middle of all this: so we Java fans can stop arguing over politics. :-)'' ---- Perhaps this is just a coincidence, but I do find it interesting that just a couple of months after Microsoft fares poorly (that seems to be the conventional wisdom) in its anti-trust case, Sun and IBM start squabbling over Java. Like I said, it is probably a coincidence, but I do wonder what would happen to Java if other computer companies stop viewing Microsoft as a common enemy. --AlanHecht ---- Sun squabbles with others over Java all the time. Initially they went on a NastyLetter spree shutting down people who "abused" the Java trademark (such as people reporting on events in the middle East, people who market coffee...). Sometime later they were squabbling with HP about realtime/embedded Java. Then they squabbled with the open-source "community". I'll omit a few in between (Microsoft, for example). Now they're squabbling with IBM...ho hum. ;-) --ZygoBlaxell PickingNits here, but Java is an island in Indonesia, which does not come under the Middle East by any stretch of the imagination. ''And the island of Java has been called that for much longer than Sun has been peddling their (ahem) language'' ---- Let's take a look at what I and others I've asked have said are some of the key elements of Java -- the things that most enable them to solve problems. * Exceptions * Garbage collection and memory management * Interfaces * Object oriented * Threads * GUI * Built-in networking support * Strong typing and specified widening/casting * extensively specified operator precedence/evaluation order * Extensive libraries included as part of the language * cross-platform portability (Leave aside for a moment please any arguments over the particulars of these) Those are the pieces of Java that the designers and programmers build on, and the elements that will carry through for as long as the language is popular. Now what kinds of problems does this toolkit solve best? I think the development of the so-called 'Enterprise APIs' is a good demonstration of these strengths. The vigor with which IBM is promoting Java across all its platforms and the number of server-side uses is another indicator. What could be cooler than writing in say, a page of code, a program that can put up a UI, spawn a thread to open a network connection and retrieve a document over it while continuing to interact with the user, and finally display the resulting document with formatted text? -- StevenNewton ''I hope that the FutureOfJava includes a real, causally reflective metastructure. The current approach is somewhere between Smalltalk-78 and C++. Most of my reduced productivity (in comparison with Smalltalk) results from the lack of real metatstructure.'' ''I also have a related desire for a pure environment, where every entity can be viewed as an object and every operation expressed as a method.'' ''-- TomStambaugh'' When you say metastructure, do you mean something beyond metaclass? -- RobertDiFalco You may want to have a look at BistroLanguage, which is a Smalltalk-ish language running on top of the Java VM and has metaclasses and metatypes. ---- Much of the above, especially the stuff near the top of the page, seems to be out of date as of August 2002. I'm not a Java expert, so I won't try to clean it up myself, but it would be nice if someone who knows what they are talking about could update it to reflect the current state of the Java world. --KrisJohnson ---- My guesses are: * bigger and better servlet framework & JSP Tag Libraries * used on almost every conceivable platforms even body implants * networking LanguageOfChoice & in web services * too big for a single person to keep tab on all developments(almost true even now) * Servlets/JSP & JNLP applications being primary use cases with significantly diminished focus on applets * primary application server language of choice * EJB becomes obsolete --AngsumanChakraborty