SlideShare una empresa de Scribd logo
1 de 78
Descargar para leer sin conexión
The Eschatology
of Java
Abdelmonaim Remani
@PolymathicCoder
@PolymathicCoder
Thursday, August 15, 13
License
Creative Commons Attribution Non-
Commercial License 3.0 Unported
The graphics and logos in this presentation
belong to their rightful owners
@PolymathicCoder
Thursday, August 15, 13
About Me
Platform Architect @ just.me Inc.
JavaOne RockStar and frequent speaker at many developer conferences and
events including JavaOne, JAX, OSCON, OREDEV, 33rd Degree, etc...
Open-source advocate and contributor
Active community member
The NorCal Java User Group
The Silicon Valley Dart Meetup
Etc...
Bio: http://about.me/PolymathicCoder
Twitter: @PolymathicCoder
Blog: http://blog.polymathiccoder.com
Email: abdelmonaim.remani@gmail.com
SlideShare: http://www.slideshare.net/PolymathicCoder
@PolymathicCoder
Thursday, August 15, 13
This Talk
Based on an Article I published on:
JAX Magazine
August 2013 issue
http://jaxenter.com/jax-magazine/
@PolymathicCoder
Thursday, August 15, 13
This Talk
Structured in such a way that
Will simply walk you through my thought process as I
try to achieve some clarity and find answers
Will hopefully not bore you to death
No predictive models, no numbers, no charts, no
figures, etc... (Totally overrated!)
Will attempt to keep you entertained throughout
Fun facts and a lot of cheesy humor
WYSIWYG
It’s all on the slides
@PolymathicCoder
Thursday, August 15, 13
Pinky Promises
I am NOT promising
Any definitive answers
Any hard empirical evidence
All I am promising
My biased opinion mostly
More importantly the answer to the question:
Why do Java programmers wear glasses?
@PolymathicCoder
Thursday, August 15, 13
You Be the Judge
@PolymathicCoder
http://speakerscore.com/sfjug-futureofjava
@PolymathicCoder
Thursday, August 15, 13
In the words of Duke...
@PolymathicCoder
Thursday, August 15, 13
The Title?
es•cha•tol•o•gy
The “[...] part of theology, philosophy, and
futurology concerned with what is believed to be
the final events of history, the ultimate destiny
of humanity - commonly referred to as the “end
of the world” or “end of time” -Wikipedia
@PolymathicCoder
Thursday, August 15, 13
What is
the Future of
Java?
@PolymathicCoder
Thursday, August 15, 13
The Java Late-Night
Talk Show
@PolymathicCoder
Thursday, August 15, 13
The Java Late-Night
Talk Show
@PolymathicCoder
Thursday, August 15, 13
What is the Future of
Java?
What/Who
decides the fate of
Java?
@PolymathicCoder
Thursday, August 15, 13
The Pundits
of the Blogosphere
The Eggheads & the Romantics
@PolymathicCoder
Thursday, August 15, 13
The Eggheads
The supported features will decide the future of Java
@PolymathicCoder
Thursday, August 15, 13
The Egghead Bash
Argue over
Wether the most recent feature is good or
bad
What should the next feature to be added
They never agree on anything
The egghead bias
The current hype
@PolymathicCoder
Thursday, August 15, 13
The song has the asymptotic complexity of O(log n)
“The Complexity of Songs” -Donald E. Knuth (1977)
http://www.cs.utexas.edu/users/arvindn/misc/knuth_song_complexity.pdf
http://99-bottles-of-beer.net/
99 Bottles of Beer
@PolymathicCoder
Thursday, August 15, 13
The song has the asymptotic complexity of O(log n)
“The Complexity of Songs” -Donald E. Knuth (1977)
http://www.cs.utexas.edu/users/arvindn/misc/knuth_song_complexity.pdf
http://99-bottles-of-beer.net/
99 Bottles of Beer
@PolymathicCoder
Thursday, August 15, 13
99 Bottles of Beer written in Piet, an esoteric programming language
http://www.dangermouse.net/esoteric/piet.html
99 Bottles of Beer
@PolymathicCoder
Thursday, August 15, 13
The Egghead Bash
More features is not always good idea
Features that are impossible to implement
Features that are not consistent with the
philosophy that drove the initial design of
the language
Is the change genuinely needed?
Is the change arguably in the right direction?
@PolymathicCoder
Thursday, August 15, 13
The Egghead Bash
The hype around a competing technology
The new kid on the block
The “hottest” Programming Language
The latest and greatest set of features at some
point in time
The old dog
The “hot-enough” Programming Language
The set of features that fulfill the needs of the
general use-case at some point in time
@PolymathicCoder
Thursday, August 15, 13
The Egghead Bash
Fad or no-fad?
Will people abandon the old dog for the new kid on the block?
Programming Language Inertia
“Hot-enough” tends to stay relevant
Hotness
A tipping point or critical “Hotness Differential” where the
new “hot” is so “hot” it renders the old “hot-enough” “unhot”
What’s up with Java?
Certainly not the “hottest”, but “hot-enough”
There isn’t anything out there approaching the tipping point in
a serious way
@PolymathicCoder
Thursday, August 15, 13
The Romantics
The community will decide the future of Java
@PolymathicCoder
Thursday, August 15, 13
The Community
@PolymathicCoder
Thursday, August 15, 13
TIOBE Index
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
@PolymathicCoder
Thursday, August 15, 13
The Romantic Bash
The chicken-or-egg causality dilemma
The relationship between viability of a
programming language and the health of
its community is a correlation at best not
causality
A healthy community only indicates
current success, but doesn’t say much
about the future success
@PolymathicCoder
Thursday, August 15, 13
“The Grey Area”
Argument
The features & community
will decide the future of Java
@PolymathicCoder
Thursday, August 15, 13
Maybe Neither of Them
Decide...
@PolymathicCoder
Thursday, August 15, 13
Programming
Language Darwinism
@PolymathicCoder
Thursday, August 15, 13
Biological Darwinism
Develop a logical argument from the
analogy drawn between the Darwinian
theory of evolution of species and the
evolution of programming languages
The concepts from evolutionary biology
that are relevant to our analogical
inference include: Survival of the fittest,
and the existence of the common ancestor
@PolymathicCoder
Thursday, August 15, 13
The Voyage of the
Beagle
“On the Origin of Species by Means of Natural
Selection, or the Preservation of Favoured Races in
the Struggle for Life” -Charles Darwin (1859)
@PolymathicCoder
Thursday, August 15, 13
Darwin’s Finches
What causes the finches living the individual islands of
the Galapagos Archipelago to be different from one
another?
@PolymathicCoder
Thursday, August 15, 13
Evolution by Natural
Selection
Species are not immutable
The environment establishes a bias towards certain traits and against other
ones
The fortunate organisms that possess the favored traits thrive, whereas the
unfortunate ones that possess the unfavored traits die off
@PolymathicCoder
Thursday, August 15, 13
Further Reading
@PolymathicCoder
Thursday, August 15, 13
Programming Languages
Darwinism
What would the theory of “The Evolution of Programming
Languages by Means of Natural Selection” be?
If programming languages were to be finch species
The beak forms of the individual finch species would be
the feature sets supported by the individual
programming languages
The population of the individual finch species would be
the community around the the individual programming
languages
But, what would the environment of the individual finch
species be analogous to?
@PolymathicCoder
Thursday, August 15, 13
Programming Languages
Darwinism
Defining the environment to the individual finch species as
The specific island of the Galapagos Archipelago it lives on
The kind of available food on its specific island
We draw the following analogy about the environment within the
context of the individual programming language as follows
The specific island of the Galapagos Archipelago would be the
specific hardware architecture on top of which the binaries of
the compiled individual programming language artifacts are
executed
The kind available food to the finch species would be the
problem space of the individual programming language (the
kind of software to be written using the individual
programming language)
@PolymathicCoder
Thursday, August 15, 13
Programming Languages
Darwinism
Biological Evolution Programming-Language Evolution
The Finch Species The Programming Language
The Finch Population The community
The Beak Form The Supported Feature Set
The Kind of Available Food The Problem Space
The Island The Underlying Hardware
@PolymathicCoder
Thursday, August 15, 13
The environment
decides the fate
of programming languages
@PolymathicCoder
Thursday, August 15, 13
The Java Finch
Java has been successful because it is well-fitted
to write currently needed software on currently
available hardware
It is reasonable to assume that it will continue
to be successful as long as the environment
stays unchanged
@PolymathicCoder
Thursday, August 15, 13
Programming Languages
Darwinism
http://oreilly.com/news/graphics/prog_lang_poster.pdf
The Common Ancestor Question?
@PolymathicCoder
Thursday, August 15, 13
To answer the question:
What is the future of Java?
we should answer questions:
Are there any significant environmental changes?
How do these changes, if any, affect Java?
Are they gonna make Java less fitted or more fitted?
@PolymathicCoder
Thursday, August 15, 13
The Real Java Finch
Juggy, The Java Finch
A Java User Group mascot
Created by Bruno Souza, Founder of
SouJava (Java User Society)
@PolymathicCoder
Thursday, August 15, 13
Environmental Change?
The Hardware We Depend On
@PolymathicCoder
Thursday, August 15, 13
Moore’s Law
The number of transistors on integrated circuits doubles approximately
every two years
“Cramming More Components onto Integrated Circuits” -Moore (1965)
http://www.cs.utexas.edu/~fussell/courses/cs352h/papers/moore.pdf
The performance gain is automatically realized by the software
@PolymathicCoder
Thursday, August 15, 13
Gordon E. Moore, Co-Founder of Intel
The Legendary Mr. Moore
@PolymathicCoder
Thursday, August 15, 13
The Legendary Mr. Moore
@PolymathicCoder
Thursday, August 15, 13
Moore’s Law
@PolymathicCoder
Thursday, August 15, 13
The End of Moore’s Law
“Reality hits you hard bro!”
-George Lindell
The Laws of Thermodynamics and Quantum
Mechanics limit the computing power of the
one silicon-chip (Heat & Leakage
constraints)
The era of the multi-core chip
@PolymathicCoder
Thursday, August 15, 13
The Imperative
Programming Paradigm
Dominant and intuitive
Java is an imperative programming language
Computational instructions are expressed as sequences of statements with the
side-effect of mutating state
Managing state is the responsibility of developers
Parallelism
One single-core chip
State mutation and access needs be synchronized among concurrently
executing threads. Not as simple as it sounds!
One multi-core chip
State mutation and access needs be synchronized among concurrently
executing threads across multiple cores
Good luck! Most end up writing software that does not take advantage of
all core
@PolymathicCoder
Thursday, August 15, 13
Ada is the world’s first computer programmer
Known for her work on the Analytical Engine, the
first programmable general-purpose computer
invented Charles Babbage, the father of the computer
The Analytical Engine
@PolymathicCoder
Thursday, August 15, 13
The Analytical Engine
“It must be evident how multifarious and how
mutually complicated are the considerations which
the working of such an engine involve. There are
frequently several distinct sets of effects going on
simultaneously; all in a manner independent of each
other, and yet to a greater or less degree exercising
a mutual influence. To adjust each to every other,
and indeed even to perceive and trace them out with
perfect correctness and success, entails difficulties
whose nature partakes to a certain extent of those
involved in every question where conditions are
very numerous and inter-complicated” - Note D
@PolymathicCoder
Thursday, August 15, 13
Further Reading
@PolymathicCoder
Thursday, August 15, 13
The Paradigm is Shifting
All imperative programming languages are
doomed to extinction
Java is no exception!
@PolymathicCoder
Thursday, August 15, 13
The New Sheriff in Town
The Functional Programming Paradigm
Oh yeah... Lisp is back!
with a posse: Scala, Clojure, etc...
@PolymathicCoder
Thursday, August 15, 13
When Pigs Fly
Java, the language
Functional Java?
It’s only a matter of time before it becomes COBOL
Java, the platform (The JVM)
Functional Programming Languages on the JVM
The Da Vinci Project (JSR 292)
“The legacy of Java will be the platform, not the language” -Martin
Fowler
I recommend reading Neal Ford’s “Java.next” series on developerWorks
http://www.ibm.com/developerworks/views/java/libraryview.jsp?
search_by=java+next:
@PolymathicCoder
Thursday, August 15, 13
Not so bad...
At least the JVM is gonna make it
Turned out to be a lot more than
“Write once, run anywhere”
@PolymathicCoder
Thursday, August 15, 13
Environmental Change?
The Software We Write
@PolymathicCoder
Thursday, August 15, 13
The Omnivorous Finch
As a generic
programming
language, Java has
proven itself suited
for almost every
use case
WTF!!!
There are no
Omnivorous
finches!
@PolymathicCoder
Thursday, August 15, 13
Nephologia
JEE, the de facto standard of the enterprise applications
Addresses the needs of the most complex requirements
Matured an impressive technology stack and a number well-defined
and standardized APIs
The impact of “Social”
The line between enterprise applications and consumer applications
is blurred
While other platforms continue to struggle, Java continues to thrives
Lightweight JEE 5 with a focus on developer productivity
Cloud computing and the emergence of PAAS
@PolymathicCoder
Thursday, August 15, 13
It’s all good news...
Server-side Java is up on cloud
number 9
Sounds like Java ain’t going nowhere!
@PolymathicCoder
Thursday, August 15, 13
The Mobile Space
Plagued by fragmentation, constrained hardware,
and scarce data connectivity only JME could
provide a programming model that unites all
An explosion of smarter and innovative devices
No Java phone
Spread so thin, JME failed to fulfill the
promise of “Write once, run anywhere”
Early JavaFX failed as much (Today’s JavaFX is
significantly different)
@PolymathicCoder
Thursday, August 15, 13
Android on a White Horse
The best thing that happened to Java?
Filled the void left by deficient JME
and JavaFX
Gave Java a much needed
rejuvenating jolt
Introduced it to a wider audience
Made it cool again
@PolymathicCoder
Thursday, August 15, 13
Android
Only if you happen to believe that Android is
Java
Java classes are compiled into a binary
that is nothing like the Java byte code
Executed on Dalvik, a VM that is nothing
like the standard JVM
Java standard class library is not fully
supported or implemented in a way that is
counter-intuitive to the Java SE developer
@PolymathicCoder
Thursday, August 15, 13
The Wolf
in Sheep Clothing
Android is NOT good for Java in the long term
Considering the paradigm shift, nothing is endangering
the future of Java as a platform more than Android
It gutted the soul of Java by opting for Dalvik instead of
the JVM, and reduced it down to the syntax language
Java is good for Android
Google free loaded on the goodwill of most popular
programming language Java
How much success would Android have Google pushed
for Go or Dart instead?
How much choice did Google actually have?
@PolymathicCoder
Thursday, August 15, 13
iOS
How many love Objective-C?
Java on iOS?
No JVM on iOS
Apple keep a tight lid on it
@PolymathicCoder
Thursday, August 15, 13
The Workaround
Ship the JVM with the app
Gosling suggested that the new JEP
178 (JDK Enhancement Proposal) will
allow shipping the runtime, native app
code, and Java code in single binary
without the need of shared libraries
http://www.computerworld.com/s/article/9239658/Computer_scientists_oppose_Oracle_39_s_bid_to_copyright_Java_APIs
@PolymathicCoder
Thursday, August 15, 13
Not So Fast!
There are some concerns
The size of the final shippable app
Project Jigsaw (JSR 337) is still
dragging
Apple’s App Store terms and conditions
are subject to change at anytime
@PolymathicCoder
Thursday, August 15, 13
The Real Challenge
Writing apps of comparable quality to native iOS apps
JavaFX Will need support for
iOS controls and look and feel consistent
with Apple’s guidelines
Apple’s hardware
JavaFX brings in outstanding performance in
handling audio, video, graphics, and animation
According to Gosling “The JIT code
generator has to be turned off”
Better off using PhoneGap-like technologies
@PolymathicCoder
Thursday, August 15, 13
The state of mobile Java is very
concerning
The biggest fear is the day where
“Write once, run nowhere”
becomes reality
@PolymathicCoder
Thursday, August 15, 13
The Elephants
in the Room
@PolymathicCoder
Thursday, August 15, 13
Vulnerabilities
It is the end of the world... Disable insecure Java!
S#!t happens!
Show me a technology that has no security issues
It mostly affected the Java browser plugin
Only 5.5% of browsers were running the patched version as of
March 25th, 2013
Drawing the line of responsibility
Developers’ vs. Oracle’s
If you are still writing Java Applets in 2013, the chicken have
come home to roost
@PolymathicCoder
Thursday, August 15, 13
Titanomachy
Oracle America, Inc. vs. Google Inc.
The Java APIs are non-copyrightable because they are
functional in nature and are required by others to use
the Java language
https://www.docketalarm.com/cases/California_Northern_District_Court/3--10-cv-03561/Oracle_America_Inc._v._Google_Inc./1190/
@PolymathicCoder
Thursday, August 15, 13
An Extract from the
Article
@PolymathicCoder
Thursday, August 15, 13
“This is one of those questions better asked to a palm
reader in the old souks of Marrakech, or a gypsy fortune-
teller in the streets of Stolipinovo.
Now, you can spend your time reading into the visible
exhalation of vapor rising from that steamy cup of Java,
asking yourself "Is it really as hot as it seems to be? Or is
the temperature of the room just too low?" 
I say... take a sip before it gets too cold to drink when all the
vapor there is to be is diffused through the air. We all know
it's been there long enough not to burn your tongue.”
- The Eschatology of Java by Abdelmonaim Remani
Thursday, August 15, 13
JAX Magazine
August 2013 issue
http://jaxenter.com/jax-magazine/
@PolymathicCoder
Thursday, August 15, 13
Questions/Comments
@PolymathicCoder
Thursday, August 15, 13
Why do Java Programmers
wear glasses?
Because they don’t C#!
-Courtesy of @ProgrammingCom
@PolymathicCoder
Thursday, August 15, 13
Thank You
@PolymathicCoder
http://speakerscore.com/sfjug-futureofjava
http://blog.polymathiccoder.com
@PolymathicCoder
Thursday, August 15, 13

Más contenido relacionado

Destacado

Reactive app using actor model & apache spark
Reactive app using actor model & apache sparkReactive app using actor model & apache spark
Reactive app using actor model & apache sparkRahul Kumar
 
Reactive dashboard’s using apache spark
Reactive dashboard’s using apache sparkReactive dashboard’s using apache spark
Reactive dashboard’s using apache sparkRahul Kumar
 
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...Anton Kirillov
 
How to build a great coding culture
How to build a great coding cultureHow to build a great coding culture
How to build a great coding cultureMark Halvorson
 
Sass Code Reviews - How one code review changed my life #SassConf2015
Sass Code Reviews - How one code review changed my life #SassConf2015Sass Code Reviews - How one code review changed my life #SassConf2015
Sass Code Reviews - How one code review changed my life #SassConf2015Stacy Kvernmo
 

Destacado (6)

Reactive app using actor model & apache spark
Reactive app using actor model & apache sparkReactive app using actor model & apache spark
Reactive app using actor model & apache spark
 
Reactive dashboard’s using apache spark
Reactive dashboard’s using apache sparkReactive dashboard’s using apache spark
Reactive dashboard’s using apache spark
 
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
 
How to build a great coding culture
How to build a great coding cultureHow to build a great coding culture
How to build a great coding culture
 
Instruction cycle
Instruction cycleInstruction cycle
Instruction cycle
 
Sass Code Reviews - How one code review changed my life #SassConf2015
Sass Code Reviews - How one code review changed my life #SassConf2015Sass Code Reviews - How one code review changed my life #SassConf2015
Sass Code Reviews - How one code review changed my life #SassConf2015
 

Más de Abdelmonaim Remani

The Rise of NoSQL and Polyglot Persistence
The Rise of NoSQL and Polyglot PersistenceThe Rise of NoSQL and Polyglot Persistence
The Rise of NoSQL and Polyglot PersistenceAbdelmonaim Remani
 
Building enterprise web applications with spring 3
Building enterprise web applications with spring 3Building enterprise web applications with spring 3
Building enterprise web applications with spring 3Abdelmonaim Remani
 
Introduction To Building Enterprise Web Application With Spring Mvc
Introduction To Building Enterprise Web Application With Spring MvcIntroduction To Building Enterprise Web Application With Spring Mvc
Introduction To Building Enterprise Web Application With Spring MvcAbdelmonaim Remani
 
Introduction To Rich Internet Applications
Introduction To Rich Internet ApplicationsIntroduction To Rich Internet Applications
Introduction To Rich Internet ApplicationsAbdelmonaim Remani
 

Más de Abdelmonaim Remani (6)

How RESTful Is Your REST?
How RESTful Is Your REST?How RESTful Is Your REST?
How RESTful Is Your REST?
 
The Rise of NoSQL and Polyglot Persistence
The Rise of NoSQL and Polyglot PersistenceThe Rise of NoSQL and Polyglot Persistence
The Rise of NoSQL and Polyglot Persistence
 
Le Tour de xUnit
Le Tour de xUnitLe Tour de xUnit
Le Tour de xUnit
 
Building enterprise web applications with spring 3
Building enterprise web applications with spring 3Building enterprise web applications with spring 3
Building enterprise web applications with spring 3
 
Introduction To Building Enterprise Web Application With Spring Mvc
Introduction To Building Enterprise Web Application With Spring MvcIntroduction To Building Enterprise Web Application With Spring Mvc
Introduction To Building Enterprise Web Application With Spring Mvc
 
Introduction To Rich Internet Applications
Introduction To Rich Internet ApplicationsIntroduction To Rich Internet Applications
Introduction To Rich Internet Applications
 

Último

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Último (20)

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

The Eschatology of Java

  • 1. The Eschatology of Java Abdelmonaim Remani @PolymathicCoder @PolymathicCoder Thursday, August 15, 13
  • 2. License Creative Commons Attribution Non- Commercial License 3.0 Unported The graphics and logos in this presentation belong to their rightful owners @PolymathicCoder Thursday, August 15, 13
  • 3. About Me Platform Architect @ just.me Inc. JavaOne RockStar and frequent speaker at many developer conferences and events including JavaOne, JAX, OSCON, OREDEV, 33rd Degree, etc... Open-source advocate and contributor Active community member The NorCal Java User Group The Silicon Valley Dart Meetup Etc... Bio: http://about.me/PolymathicCoder Twitter: @PolymathicCoder Blog: http://blog.polymathiccoder.com Email: abdelmonaim.remani@gmail.com SlideShare: http://www.slideshare.net/PolymathicCoder @PolymathicCoder Thursday, August 15, 13
  • 4. This Talk Based on an Article I published on: JAX Magazine August 2013 issue http://jaxenter.com/jax-magazine/ @PolymathicCoder Thursday, August 15, 13
  • 5. This Talk Structured in such a way that Will simply walk you through my thought process as I try to achieve some clarity and find answers Will hopefully not bore you to death No predictive models, no numbers, no charts, no figures, etc... (Totally overrated!) Will attempt to keep you entertained throughout Fun facts and a lot of cheesy humor WYSIWYG It’s all on the slides @PolymathicCoder Thursday, August 15, 13
  • 6. Pinky Promises I am NOT promising Any definitive answers Any hard empirical evidence All I am promising My biased opinion mostly More importantly the answer to the question: Why do Java programmers wear glasses? @PolymathicCoder Thursday, August 15, 13
  • 7. You Be the Judge @PolymathicCoder http://speakerscore.com/sfjug-futureofjava @PolymathicCoder Thursday, August 15, 13
  • 8. In the words of Duke... @PolymathicCoder Thursday, August 15, 13
  • 9. The Title? es•cha•tol•o•gy The “[...] part of theology, philosophy, and futurology concerned with what is believed to be the final events of history, the ultimate destiny of humanity - commonly referred to as the “end of the world” or “end of time” -Wikipedia @PolymathicCoder Thursday, August 15, 13
  • 10. What is the Future of Java? @PolymathicCoder Thursday, August 15, 13
  • 11. The Java Late-Night Talk Show @PolymathicCoder Thursday, August 15, 13
  • 12. The Java Late-Night Talk Show @PolymathicCoder Thursday, August 15, 13
  • 13. What is the Future of Java? What/Who decides the fate of Java? @PolymathicCoder Thursday, August 15, 13
  • 14. The Pundits of the Blogosphere The Eggheads & the Romantics @PolymathicCoder Thursday, August 15, 13
  • 15. The Eggheads The supported features will decide the future of Java @PolymathicCoder Thursday, August 15, 13
  • 16. The Egghead Bash Argue over Wether the most recent feature is good or bad What should the next feature to be added They never agree on anything The egghead bias The current hype @PolymathicCoder Thursday, August 15, 13
  • 17. The song has the asymptotic complexity of O(log n) “The Complexity of Songs” -Donald E. Knuth (1977) http://www.cs.utexas.edu/users/arvindn/misc/knuth_song_complexity.pdf http://99-bottles-of-beer.net/ 99 Bottles of Beer @PolymathicCoder Thursday, August 15, 13
  • 18. The song has the asymptotic complexity of O(log n) “The Complexity of Songs” -Donald E. Knuth (1977) http://www.cs.utexas.edu/users/arvindn/misc/knuth_song_complexity.pdf http://99-bottles-of-beer.net/ 99 Bottles of Beer @PolymathicCoder Thursday, August 15, 13
  • 19. 99 Bottles of Beer written in Piet, an esoteric programming language http://www.dangermouse.net/esoteric/piet.html 99 Bottles of Beer @PolymathicCoder Thursday, August 15, 13
  • 20. The Egghead Bash More features is not always good idea Features that are impossible to implement Features that are not consistent with the philosophy that drove the initial design of the language Is the change genuinely needed? Is the change arguably in the right direction? @PolymathicCoder Thursday, August 15, 13
  • 21. The Egghead Bash The hype around a competing technology The new kid on the block The “hottest” Programming Language The latest and greatest set of features at some point in time The old dog The “hot-enough” Programming Language The set of features that fulfill the needs of the general use-case at some point in time @PolymathicCoder Thursday, August 15, 13
  • 22. The Egghead Bash Fad or no-fad? Will people abandon the old dog for the new kid on the block? Programming Language Inertia “Hot-enough” tends to stay relevant Hotness A tipping point or critical “Hotness Differential” where the new “hot” is so “hot” it renders the old “hot-enough” “unhot” What’s up with Java? Certainly not the “hottest”, but “hot-enough” There isn’t anything out there approaching the tipping point in a serious way @PolymathicCoder Thursday, August 15, 13
  • 23. The Romantics The community will decide the future of Java @PolymathicCoder Thursday, August 15, 13
  • 26. The Romantic Bash The chicken-or-egg causality dilemma The relationship between viability of a programming language and the health of its community is a correlation at best not causality A healthy community only indicates current success, but doesn’t say much about the future success @PolymathicCoder Thursday, August 15, 13
  • 27. “The Grey Area” Argument The features & community will decide the future of Java @PolymathicCoder Thursday, August 15, 13
  • 28. Maybe Neither of Them Decide... @PolymathicCoder Thursday, August 15, 13
  • 30. Biological Darwinism Develop a logical argument from the analogy drawn between the Darwinian theory of evolution of species and the evolution of programming languages The concepts from evolutionary biology that are relevant to our analogical inference include: Survival of the fittest, and the existence of the common ancestor @PolymathicCoder Thursday, August 15, 13
  • 31. The Voyage of the Beagle “On the Origin of Species by Means of Natural Selection, or the Preservation of Favoured Races in the Struggle for Life” -Charles Darwin (1859) @PolymathicCoder Thursday, August 15, 13
  • 32. Darwin’s Finches What causes the finches living the individual islands of the Galapagos Archipelago to be different from one another? @PolymathicCoder Thursday, August 15, 13
  • 33. Evolution by Natural Selection Species are not immutable The environment establishes a bias towards certain traits and against other ones The fortunate organisms that possess the favored traits thrive, whereas the unfortunate ones that possess the unfavored traits die off @PolymathicCoder Thursday, August 15, 13
  • 35. Programming Languages Darwinism What would the theory of “The Evolution of Programming Languages by Means of Natural Selection” be? If programming languages were to be finch species The beak forms of the individual finch species would be the feature sets supported by the individual programming languages The population of the individual finch species would be the community around the the individual programming languages But, what would the environment of the individual finch species be analogous to? @PolymathicCoder Thursday, August 15, 13
  • 36. Programming Languages Darwinism Defining the environment to the individual finch species as The specific island of the Galapagos Archipelago it lives on The kind of available food on its specific island We draw the following analogy about the environment within the context of the individual programming language as follows The specific island of the Galapagos Archipelago would be the specific hardware architecture on top of which the binaries of the compiled individual programming language artifacts are executed The kind available food to the finch species would be the problem space of the individual programming language (the kind of software to be written using the individual programming language) @PolymathicCoder Thursday, August 15, 13
  • 37. Programming Languages Darwinism Biological Evolution Programming-Language Evolution The Finch Species The Programming Language The Finch Population The community The Beak Form The Supported Feature Set The Kind of Available Food The Problem Space The Island The Underlying Hardware @PolymathicCoder Thursday, August 15, 13
  • 38. The environment decides the fate of programming languages @PolymathicCoder Thursday, August 15, 13
  • 39. The Java Finch Java has been successful because it is well-fitted to write currently needed software on currently available hardware It is reasonable to assume that it will continue to be successful as long as the environment stays unchanged @PolymathicCoder Thursday, August 15, 13
  • 41. To answer the question: What is the future of Java? we should answer questions: Are there any significant environmental changes? How do these changes, if any, affect Java? Are they gonna make Java less fitted or more fitted? @PolymathicCoder Thursday, August 15, 13
  • 42. The Real Java Finch Juggy, The Java Finch A Java User Group mascot Created by Bruno Souza, Founder of SouJava (Java User Society) @PolymathicCoder Thursday, August 15, 13
  • 43. Environmental Change? The Hardware We Depend On @PolymathicCoder Thursday, August 15, 13
  • 44. Moore’s Law The number of transistors on integrated circuits doubles approximately every two years “Cramming More Components onto Integrated Circuits” -Moore (1965) http://www.cs.utexas.edu/~fussell/courses/cs352h/papers/moore.pdf The performance gain is automatically realized by the software @PolymathicCoder Thursday, August 15, 13
  • 45. Gordon E. Moore, Co-Founder of Intel The Legendary Mr. Moore @PolymathicCoder Thursday, August 15, 13
  • 46. The Legendary Mr. Moore @PolymathicCoder Thursday, August 15, 13
  • 48. The End of Moore’s Law “Reality hits you hard bro!” -George Lindell The Laws of Thermodynamics and Quantum Mechanics limit the computing power of the one silicon-chip (Heat & Leakage constraints) The era of the multi-core chip @PolymathicCoder Thursday, August 15, 13
  • 49. The Imperative Programming Paradigm Dominant and intuitive Java is an imperative programming language Computational instructions are expressed as sequences of statements with the side-effect of mutating state Managing state is the responsibility of developers Parallelism One single-core chip State mutation and access needs be synchronized among concurrently executing threads. Not as simple as it sounds! One multi-core chip State mutation and access needs be synchronized among concurrently executing threads across multiple cores Good luck! Most end up writing software that does not take advantage of all core @PolymathicCoder Thursday, August 15, 13
  • 50. Ada is the world’s first computer programmer Known for her work on the Analytical Engine, the first programmable general-purpose computer invented Charles Babbage, the father of the computer The Analytical Engine @PolymathicCoder Thursday, August 15, 13
  • 51. The Analytical Engine “It must be evident how multifarious and how mutually complicated are the considerations which the working of such an engine involve. There are frequently several distinct sets of effects going on simultaneously; all in a manner independent of each other, and yet to a greater or less degree exercising a mutual influence. To adjust each to every other, and indeed even to perceive and trace them out with perfect correctness and success, entails difficulties whose nature partakes to a certain extent of those involved in every question where conditions are very numerous and inter-complicated” - Note D @PolymathicCoder Thursday, August 15, 13
  • 53. The Paradigm is Shifting All imperative programming languages are doomed to extinction Java is no exception! @PolymathicCoder Thursday, August 15, 13
  • 54. The New Sheriff in Town The Functional Programming Paradigm Oh yeah... Lisp is back! with a posse: Scala, Clojure, etc... @PolymathicCoder Thursday, August 15, 13
  • 55. When Pigs Fly Java, the language Functional Java? It’s only a matter of time before it becomes COBOL Java, the platform (The JVM) Functional Programming Languages on the JVM The Da Vinci Project (JSR 292) “The legacy of Java will be the platform, not the language” -Martin Fowler I recommend reading Neal Ford’s “Java.next” series on developerWorks http://www.ibm.com/developerworks/views/java/libraryview.jsp? search_by=java+next: @PolymathicCoder Thursday, August 15, 13
  • 56. Not so bad... At least the JVM is gonna make it Turned out to be a lot more than “Write once, run anywhere” @PolymathicCoder Thursday, August 15, 13
  • 57. Environmental Change? The Software We Write @PolymathicCoder Thursday, August 15, 13
  • 58. The Omnivorous Finch As a generic programming language, Java has proven itself suited for almost every use case WTF!!! There are no Omnivorous finches! @PolymathicCoder Thursday, August 15, 13
  • 59. Nephologia JEE, the de facto standard of the enterprise applications Addresses the needs of the most complex requirements Matured an impressive technology stack and a number well-defined and standardized APIs The impact of “Social” The line between enterprise applications and consumer applications is blurred While other platforms continue to struggle, Java continues to thrives Lightweight JEE 5 with a focus on developer productivity Cloud computing and the emergence of PAAS @PolymathicCoder Thursday, August 15, 13
  • 60. It’s all good news... Server-side Java is up on cloud number 9 Sounds like Java ain’t going nowhere! @PolymathicCoder Thursday, August 15, 13
  • 61. The Mobile Space Plagued by fragmentation, constrained hardware, and scarce data connectivity only JME could provide a programming model that unites all An explosion of smarter and innovative devices No Java phone Spread so thin, JME failed to fulfill the promise of “Write once, run anywhere” Early JavaFX failed as much (Today’s JavaFX is significantly different) @PolymathicCoder Thursday, August 15, 13
  • 62. Android on a White Horse The best thing that happened to Java? Filled the void left by deficient JME and JavaFX Gave Java a much needed rejuvenating jolt Introduced it to a wider audience Made it cool again @PolymathicCoder Thursday, August 15, 13
  • 63. Android Only if you happen to believe that Android is Java Java classes are compiled into a binary that is nothing like the Java byte code Executed on Dalvik, a VM that is nothing like the standard JVM Java standard class library is not fully supported or implemented in a way that is counter-intuitive to the Java SE developer @PolymathicCoder Thursday, August 15, 13
  • 64. The Wolf in Sheep Clothing Android is NOT good for Java in the long term Considering the paradigm shift, nothing is endangering the future of Java as a platform more than Android It gutted the soul of Java by opting for Dalvik instead of the JVM, and reduced it down to the syntax language Java is good for Android Google free loaded on the goodwill of most popular programming language Java How much success would Android have Google pushed for Go or Dart instead? How much choice did Google actually have? @PolymathicCoder Thursday, August 15, 13
  • 65. iOS How many love Objective-C? Java on iOS? No JVM on iOS Apple keep a tight lid on it @PolymathicCoder Thursday, August 15, 13
  • 66. The Workaround Ship the JVM with the app Gosling suggested that the new JEP 178 (JDK Enhancement Proposal) will allow shipping the runtime, native app code, and Java code in single binary without the need of shared libraries http://www.computerworld.com/s/article/9239658/Computer_scientists_oppose_Oracle_39_s_bid_to_copyright_Java_APIs @PolymathicCoder Thursday, August 15, 13
  • 67. Not So Fast! There are some concerns The size of the final shippable app Project Jigsaw (JSR 337) is still dragging Apple’s App Store terms and conditions are subject to change at anytime @PolymathicCoder Thursday, August 15, 13
  • 68. The Real Challenge Writing apps of comparable quality to native iOS apps JavaFX Will need support for iOS controls and look and feel consistent with Apple’s guidelines Apple’s hardware JavaFX brings in outstanding performance in handling audio, video, graphics, and animation According to Gosling “The JIT code generator has to be turned off” Better off using PhoneGap-like technologies @PolymathicCoder Thursday, August 15, 13
  • 69. The state of mobile Java is very concerning The biggest fear is the day where “Write once, run nowhere” becomes reality @PolymathicCoder Thursday, August 15, 13
  • 70. The Elephants in the Room @PolymathicCoder Thursday, August 15, 13
  • 71. Vulnerabilities It is the end of the world... Disable insecure Java! S#!t happens! Show me a technology that has no security issues It mostly affected the Java browser plugin Only 5.5% of browsers were running the patched version as of March 25th, 2013 Drawing the line of responsibility Developers’ vs. Oracle’s If you are still writing Java Applets in 2013, the chicken have come home to roost @PolymathicCoder Thursday, August 15, 13
  • 72. Titanomachy Oracle America, Inc. vs. Google Inc. The Java APIs are non-copyrightable because they are functional in nature and are required by others to use the Java language https://www.docketalarm.com/cases/California_Northern_District_Court/3--10-cv-03561/Oracle_America_Inc._v._Google_Inc./1190/ @PolymathicCoder Thursday, August 15, 13
  • 73. An Extract from the Article @PolymathicCoder Thursday, August 15, 13
  • 74. “This is one of those questions better asked to a palm reader in the old souks of Marrakech, or a gypsy fortune- teller in the streets of Stolipinovo. Now, you can spend your time reading into the visible exhalation of vapor rising from that steamy cup of Java, asking yourself "Is it really as hot as it seems to be? Or is the temperature of the room just too low?"  I say... take a sip before it gets too cold to drink when all the vapor there is to be is diffused through the air. We all know it's been there long enough not to burn your tongue.” - The Eschatology of Java by Abdelmonaim Remani Thursday, August 15, 13
  • 75. JAX Magazine August 2013 issue http://jaxenter.com/jax-magazine/ @PolymathicCoder Thursday, August 15, 13
  • 77. Why do Java Programmers wear glasses? Because they don’t C#! -Courtesy of @ProgrammingCom @PolymathicCoder Thursday, August 15, 13