The Future of Java (Keynote Address from GIDS 2013 in Bangalore)


Published on

Where is Java going? Java will continue to be the dominant programming language in the next decade! Java is the COBOL of the 21st century! Java is innovative! Java is stale!

What is the truth about the future of Java? Of course, we cannot know for sure, but we can extrapolate some trends and see what they predict about Java’s future.

This is a high-level talk from the Great Indian Developer Summit in Bangalore India. For more technical tutorials on a variety of Java-related topics, please see Customized onsite training also available.

Published in: Technology, Education
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

The Future of Java (Keynote Address from GIDS 2013 in Bangalore)

  1. 1. The Futureof Java(Keynote Address from GIDS 2013 in Bangalore)Marty Hall, hall@coreservlets.comCustomized training:
  2. 2. Where is Java Going?• Views on Java– Java will continue to be the dominantprogramming language in the next decade!– Java is the COBOL of the 21st century!– Java is innovative!– Java is stale!• Predicting the future– Of course, we cannot know for sure, but we can extrapolatesome trends and see what they predict about Java’s future.• Always risky in fast-changing tech world, but it’s the best we can do
  3. 3. Trends• Core language features– Java timeline and how quickly important features are added• Legal and management issues– Google and Apache spats• Libraries and packages– Web apps, HTML5?, mobile apps, big data• Types of devices– What can you use to run Java?• Empirical data– Which languages are used in practice? Trends?
  4. 4. Core LanguageFeatures4
  5. 5. Java SE Version History(Green: Major; Blue: Minor)5Dates from and 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8{2005-2012Stagnation
  6. 6. Java SE Epochs• 1996-1998: early days– Many major new releases with very significant new features• 1999-2004: steady growth– Only one major release, but steady performance improvements andadditions to libraries.• And, the one major release (Java 5) was huge improvement.• 2005-2012: stagnation– Two underwhelming releases (Java 6 and Java 7). Yawn.– Oracle takes over Sun. Fights with Apache and Google. Gosling departs.• 2013: resurgence– Very major improvements (lambdas and streams).• By far the biggest additions since generics in Java 5 in 20046
  7. 7. Java 8 Lambdas: Big Idea• You write what looks like a functionArrays.sort(testStrings, (s1, s2) -> s1.length() - s2.length());• What you really get is an anonymous innerclass that implements the expected interfaceArrays.sort(testStrings, new Comparator<String>() {@Overridepublic int compare(String s1, String s2) {return(s1.length() - s2.length());}});7
  8. 8. Java 8 Lambdas: Samples• As arguments to methods– Arrays.sort(testStrings, (s1, s2) -> s1.length() - s2.length());– taskList.execute(() -> downloadSomeFile());– button.addActionListener(event -> handleButtonClick());– double d = MathUtils.integrate(x -> x*x, 0, 100, 1000);8Lambdas are a big step forward by Java standards, but even with lambdas, Java support for functional programming is weakcompared to “real” functional languages like Scala, Clojure, Scheme, Lisp, etc.
  9. 9. Java 8 Lambdas: Samples• As variables (makes real type more obvious)– AutoCloseable c = () -> cleanupForTryWithResources();– Thread.UncaughtExceptionHandler handler =(thread, exception) -> doSomethingAboutException();– Formattable f =(formatter, flags, width, precision) -> makeFormattedString();– ContentHandlerFactory fact =mimeType -> createContentHandlerForMimeType();– CookiePolicy policy =(uri, cookie) -> decideIfCookieShouldBeAccepted();– Flushable toilet = () -> writeBufferedOutputToStream();– TextListener t = event -> respondToChangeInTextValue();9
  10. 10. Java 8: Streams• ExampleSomeCoolList<Student> students = …;double highestGrade =students.filter(s -> s.getGraduationYear() == 2012).map(s -> s.getGrade()).max();• Benefits– Concise– Chaining– Concurrent10
  11. 11. Legal andManagement Issues11
  12. 12. Issues• Ellison is good for Oracle; is he good for Java?– Does confrontational style suit a language that is not supposed tobe proprietary?• Gosling is gone– Father of Java moves on. Will progeny flourish?• Apache leaves Java Community Process– Is “community” a misnomer in the name now?– Is Oracle expecting a rubber-stamp executive committee?• Oracles fights with Google about Java– Civil war between the two largest Java companies?12
  13. 13. Oracle CEO Larry Ellison
  14. 14. Larry Ellison, Oracle, and Java• Java decisions being made by managers, nottechnical experts?– “My ability to decide anything at Oracle was minimized,” James Goslingsaid. “Oracle is an extremely micromanaged company. So myself and mypeers in the Java area were not allowed to decide anything. All of ourauthority to decide anything evaporated.” – Quoted in eWeek• Java becoming tied to Oracle products or services?– Widely predicted, but little or no evidence of this yet.– Oracle ADF• Is tied (somewhat) to Oracle products• Is not part of Java and is not presented as an official library– Oracle JDeveloper IDE• Tied somewhat to ADF and Oracle products, but not official part of Java• Nobody uses JDeveloper anyhow, so who cares?14
  15. 15. Gosling Gone• Ellison drove away James Gosling?– Unconfirmed, but widely rumored with reasonably goodevidence to back it up• “Just about anything I could say that would be accurate and honestwould do more harm than good.”– James Gosling on his blog, regarding why he did not join Oracle when Oracle tookover Sun• Goetz and others can’t fill Gosling’s shoes?– It is hard for anyone to live up to Gosling, but under BrianGoetz’ recent tenure, Java has shown more improvementsthan in past few years,15
  16. 16. Apache Software Foundation andthe Java Community Process• Apache Software Foundation (ASF) felt– The JCP did not sufficiently protect the right for open sourceimplementations of new specifications• Specifically regarding a Technology Compatibility Kit for Apache Harmony, amodular Java runtime– The executive committee was supposed to too easily go along withOracle’s recommendations (“rubber stamp”)• Result– Apache resigned its seat on the JCP executive committee (Dec 2010)• Unresolved questions– Have licensing and open source issues been resolved? Will the JCPprocess be viewed as fair and open? Will there continue to be industryparticipation in JCPs?16
  17. 17. Oracle vs. Google• Oracle sues Google for copyright infringement– For reimplementation of Java used for Android• Case settled in June 2012– Widely viewed as a victory for Google– Some also view it as a victory for Java• Unresolved question– If Oracle, IBM, and Google are three biggest Java users in theworld, why was Oracle spending its energies fighting Java’sfriends instead of Java’s enemies?17
  18. 18. Packages andLibraries18
  19. 19. Non-Java-SE Libraries for Java• Big idea– It is not just the features of the core Java language that matter,but the number and quality of supporting libraries• Observation– Libraries and packages have continued to flourish.• This is a particularly strong point for Java, even during 2005-2012when improvements to the core language slowed.• Notable examples– Android– JSF (and PrimeFaces, RichFaces)– Hadoop
  20. 20. Android• Core Android OS and apps are written in Java– Java SE with special JVM.– Extra libraries specific to mobile apps• GUI library, threading utilities, accessing sensors. These librarieshave progressed rapidly• But, “regular” Java SE code can be imported and run.– Not a new version of Java: regular Java SE with libraries• Result– Even more Java developers• Mobile apps now 2nd-most importantJava area after Web apps20
  21. 21. JavaServer Faces (JSF)• JSF itself– JSF 2 is very strong library for writing Web apps in Java.• Replacing servlets and JSP, which are too low level for the requirements ofmodern apps• Superseding clunky and cumbersome JSF 1 (and Struts 1)• 3rd-party component libraries for JSF– Rapidly growing set of rich GUI components for Web pages– PrimeFaces, RichFaces, IceFaces, Oracle ADF Faces, etc.• HTML 5– JSF 2.2 has moderate support for HTML 5.– Long-term impact of HTML 5 (esp. Canvas and WebSockets) onJava Web app frameworks is unclear21
  22. 22. HTML 5 and New Web Standards• JSF 2.2– Some support for HTML 5, but truly rich components aremostly in component libraries (PrimeFaces, RichFaces, etc.)• WebSockets– Very highly-regarded server-side library released with JavaEE 7, but can be used separately. (JSR 356)• JSON– Java API for JSON Processing now out. (JSR 353)• Increasing role of JavaScript– Will this complement or compete with Java?22
  23. 23. Big Data• Information Data Corporation (IDC) estimatesdata created in 2010 to be• Companies continue to generate largeamounts of data. Here are some 2011 stats:– Facebook ~ 6 billion messages per day– EBay ~ 2 billion page views a day, ~ 9 Petabytes of storage– Satellite Images by Skybox Imaging ~ 1 Terabyte per day23Sources:"Digital Universe" study by IDC; World 2011 Keynote: Hugh E. Williams, eBayHadoop World 2011: Building Realtime Big Data Services at Facebook with Hadoop and HBaseHadoop World 2011: Indexing the Earth – Large Scale Satellite Image Processing Using Hadoop1.2 ZETTABYTES(1.2 Trillion Gigabytes)
  24. 24. Hadoop• Existing tools were not designed to handlesuch large amounts of data– “The Apache™ Hadoop™ project develops open-sourcesoftware for reliable, scalable, distributed computing.”•– Process Big Data on clusters of commodity hardware– Vibrant open-source community– Many products and tools reside on top of Hadoop24
  25. 25. Hadoop Jobs25
  26. 26. Devices26
  27. 27. Types of Devices that Run Java• Major– Traditional computers– Tablets– Phones• Other– Kindle, Blu-Ray players, printers, routers, parking meters,vehicle diagnostic systems, on-board computer systems, smartgrid meters, lottery systems, airplane systems, ATMs,government IDs, public transportation passes, credit cards,VoIP phones, livescribe smart phones, MRIs, CT scanners,robots, home security systems, TVs, cable boxes, playstationconsoles
  28. 28. Conclusions• Major devices– Same three as in the past, but market share of Java for tabletsand phones is increasing• Other devices– Importance unclear• Lots of people use Kindles and Blu-Ray players, but how manypeople write apps for them?– Nevertheless, the trend is positive• Java moving into new devices far more than any other language28
  29. 29. Empirical Data29
  30. 30. Java vs. C# – Job Postings
  31. 31. Java vs. C# – Google Searches
  32. 32. Java vs. C++ – Job Postings
  33. 33. Java vs. C++ – Google Searches
  34. 34. Java vs. VB – Job Postings
  35. 35. Java vs. VB – Google Searches
  36. 36. Java vs. Perl and Python –Job Postings
  37. 37. Java vs. Perl and Python –Google Searches
  38. 38. Java vs. Other Languages –Job Postings
  39. 39. Java vs. Other Languages –Google Searches
  40. 40. Java vs. HTML5 – Job Postings
  41. 41. Java vs. HTML5 – Google Searches
  42. 42. Other Measures of Popularity – Tiobe42Source:
  43. 43. Other Measures of Popularity – PyPL43Source:
  44. 44. Wrap-Up44
  45. 45. 45Rating Future Prospectsfrom Past Performance (1-5 Stars)• Technical evolutionof language• Management andlegal issues• Libraries• Devices• Empirical data• Final rating
  46. 46. Final Conclusions• Java looks moderately strong for the future– But some risks, especially regarding management and legalissues in keeping Java vibrant and in keeping other companiesinvolved.• No other language looks even remotely close– Biggest threats probably comes from not-yet-mainstreamlanguages, not existing languages• IT world changes rapidly– Reevaluate language choice every few years46
  47. 47. Questions?Customized training on Android, JSF2, Java EE, Ajax, Hadoop JSF 2, PrimeFaces, Java 7 or 8, Ajax, jQuery, Hadoop,RESTful Web Services, Android, HTML5, Spring, Hibernate, Servlets, JSP,GWT, and other Java EE training.
  48. 48. For live Java-related training,see email by the author of Core Servlets and JSP, More Servletsand JSP, and this tutorial. Available at public venues, orcustomized versions can be held on-site at your organization.• Courses developed and taught by Marty Hall– JSF 2, PrimeFaces, servlets/JSP, Ajax, jQuery, Android development, Java 7 or 8 programming, custom mix of topics– Courses available in any state or country. Maryland/DC area companies can also choose afternoon/evening courses.• Courses developed and taught by experts (edited by Marty)– Spring, Hibernate/JPA, GWT, Hadoop, HTML5, RESTful Web ServicesContact for details