78
The Eschatology of Java Abdelmonaim Remani @PolymathicCoder @PolymathicCoder Thursday, August 15, 13

The Eschatology of Java

Embed Size (px)

DESCRIPTION

"What is the future of Java?" is a hard question to tackle. It should be given serious thought whether you are a veteran with a lot invested, a noob trying to figure out what is worthwhile, or just a self-proclaimed Java hater. In this session, Abdelmonaim will start by introducing the concept of Programming Languages Darwinism to answer what really determines the fate of a technology. A series of questions will be addressed to achieve some clarity such as: How is the paradigm shifting? Why do functional programming languages matter? What is the state of mobile Java? How does the patent wars affect Java? What about the recent security threats? And many more... Expect this session to be controversial, emotionally-charged, and very opinionated.

Citation preview

Page 1: The Eschatology of Java

The Eschatology of Java

Abdelmonaim Remani@PolymathicCoder

@PolymathicCoderThursday, August 15, 13

Page 2: The Eschatology of Java

LicenseCreative Commons Attribution Non-

Commercial License 3.0 Unported

The graphics and logos in this presentation belong to their rightful owners

@PolymathicCoderThursday, August 15, 13

Page 3: The Eschatology of Java

About MePlatform 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: [email protected]

SlideShare: http://www.slideshare.net/PolymathicCoder

@PolymathicCoderThursday, August 15, 13

Page 4: The Eschatology of Java

This TalkBased on an Article I published on:

JAX MagazineAugust 2013 issue

http://jaxenter.com/jax-magazine/

@PolymathicCoderThursday, August 15, 13

Page 5: The Eschatology of Java

This TalkStructured 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

@PolymathicCoderThursday, August 15, 13

Page 6: The Eschatology of Java

Pinky PromisesI 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?

@PolymathicCoderThursday, August 15, 13

Page 7: The Eschatology of Java

You Be the Judge

@PolymathicCoder

http://speakerscore.com/sfjug-futureofjava

@PolymathicCoderThursday, August 15, 13

Page 8: The Eschatology of Java

In the words of Duke...

@PolymathicCoderThursday, August 15, 13

Page 9: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 10: The Eschatology of Java

What is the Future of

Java?

@PolymathicCoderThursday, August 15, 13

Page 11: The Eschatology of Java

The Java Late-Night Talk Show

@PolymathicCoderThursday, August 15, 13

Page 12: The Eschatology of Java

The Java Late-Night Talk Show

@PolymathicCoderThursday, August 15, 13

Page 13: The Eschatology of Java

What is the Future of Java?

What/Who decides the fate of

Java?@PolymathicCoder

Thursday, August 15, 13

Page 14: The Eschatology of Java

The Pundits of the Blogosphere

The Eggheads & the Romantics

@PolymathicCoderThursday, August 15, 13

Page 15: The Eschatology of Java

The Eggheads

The supported features will decide the future of Java

@PolymathicCoderThursday, August 15, 13

Page 16: The Eschatology of Java

The Egghead BashArgue 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

@PolymathicCoderThursday, August 15, 13

Page 17: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 18: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 19: The Eschatology of Java

99 Bottles of Beer written in Piet, an esoteric programming language

http://www.dangermouse.net/esoteric/piet.html

99 Bottles of Beer

@PolymathicCoderThursday, August 15, 13

Page 20: The Eschatology of Java

The Egghead BashMore 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?

@PolymathicCoderThursday, August 15, 13

Page 21: The Eschatology of Java

The Egghead BashThe 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

@PolymathicCoderThursday, August 15, 13

Page 22: The Eschatology of Java

The Egghead BashFad 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

@PolymathicCoderThursday, August 15, 13

Page 23: The Eschatology of Java

The Romantics

The community will decide the future of Java

@PolymathicCoderThursday, August 15, 13

Page 24: The Eschatology of Java

The Community

@PolymathicCoderThursday, August 15, 13

Page 25: The Eschatology of Java

TIOBE Index

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

@PolymathicCoderThursday, August 15, 13

Page 26: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 27: The Eschatology of Java

“The Grey Area” Argument

The features & community will decide the future of Java

@PolymathicCoderThursday, August 15, 13

Page 28: The Eschatology of Java

Maybe Neither of Them Decide...

@PolymathicCoderThursday, August 15, 13

Page 29: The Eschatology of Java

Programming Language Darwinism

@PolymathicCoderThursday, August 15, 13

Page 30: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 31: The Eschatology of Java

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

Page 32: The Eschatology of Java

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

Page 33: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 34: The Eschatology of Java

Further Reading

@PolymathicCoderThursday, August 15, 13

Page 35: The Eschatology of Java

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?

@PolymathicCoderThursday, August 15, 13

Page 36: The Eschatology of Java

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)

@PolymathicCoderThursday, August 15, 13

Page 37: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 38: The Eschatology of Java

The environmentdecides the fate

of programming languages

@PolymathicCoderThursday, August 15, 13

Page 39: The Eschatology of Java

The Java FinchJava 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

Page 40: The Eschatology of Java

Programming Languages Darwinism

http://oreilly.com/news/graphics/prog_lang_poster.pdf

The Common Ancestor Question?

@PolymathicCoderThursday, August 15, 13

Page 41: The Eschatology of Java

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?

@PolymathicCoderThursday, August 15, 13

Page 42: The Eschatology of Java

The Real Java Finch

Juggy, The Java Finch

A Java User Group mascot

Created by Bruno Souza, Founder of SouJava (Java User Society)

@PolymathicCoderThursday, August 15, 13

Page 43: The Eschatology of Java

Environmental Change?

The Hardware We Depend On

@PolymathicCoderThursday, August 15, 13

Page 44: The Eschatology of Java

Moore’s LawThe 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

@PolymathicCoderThursday, August 15, 13

Page 45: The Eschatology of Java

Gordon E. Moore, Co-Founder of Intel

The Legendary Mr. Moore

@PolymathicCoderThursday, August 15, 13

Page 46: The Eschatology of Java

The Legendary Mr. Moore

@PolymathicCoderThursday, August 15, 13

Page 47: The Eschatology of Java

Moore’s Law

@PolymathicCoderThursday, August 15, 13

Page 48: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 49: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 50: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 51: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 52: The Eschatology of Java

Further Reading

@PolymathicCoderThursday, August 15, 13

Page 53: The Eschatology of Java

The Paradigm is ShiftingAll imperative programming languages are

doomed to extinction

Java is no exception!@PolymathicCoder

Thursday, August 15, 13

Page 54: The Eschatology of Java

The New Sheriff in TownThe Functional Programming Paradigm

Oh yeah... Lisp is back!with a posse: Scala, Clojure, etc...

@PolymathicCoderThursday, August 15, 13

Page 55: The Eschatology of Java

When Pigs FlyJava, 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:

@PolymathicCoderThursday, August 15, 13

Page 56: The Eschatology of Java

Not so bad...At least the JVM is gonna make it

Turned out to be a lot more than“Write once, run anywhere”

@PolymathicCoderThursday, August 15, 13

Page 57: The Eschatology of Java

Environmental Change?

The Software We Write

@PolymathicCoderThursday, August 15, 13

Page 58: The Eschatology of Java

The Omnivorous FinchAs a generic

programming language, Java has proven itself suited

for almost every use case

WTF!!!There are no Omnivorous

finches!

@PolymathicCoderThursday, August 15, 13

Page 59: The Eschatology of Java

NephologiaJEE, 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

@PolymathicCoderThursday, August 15, 13

Page 60: The Eschatology of Java

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

Page 61: The Eschatology of Java

The Mobile SpacePlagued 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)

@PolymathicCoderThursday, August 15, 13

Page 62: The Eschatology of Java

Android on a White HorseThe 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

@PolymathicCoderThursday, August 15, 13

Page 63: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 64: The Eschatology of Java

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?

@PolymathicCoderThursday, August 15, 13

Page 65: The Eschatology of Java

iOSHow many love Objective-C?

Java on iOS?

No JVM on iOS

Apple keep a tight lid on it

@PolymathicCoderThursday, August 15, 13

Page 66: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 67: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 68: The Eschatology of Java

The Real ChallengeWriting 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

@PolymathicCoderThursday, August 15, 13

Page 69: The Eschatology of Java

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

Page 70: The Eschatology of Java

The Elephants in the Room

@PolymathicCoderThursday, August 15, 13

Page 71: The Eschatology of Java

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

@PolymathicCoderThursday, August 15, 13

Page 72: The Eschatology of Java

TitanomachyOracle 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 languagehttps://www.docketalarm.com/cases/California_Northern_District_Court/3--10-cv-03561/Oracle_America_Inc._v._Google_Inc./1190/

@PolymathicCoderThursday, August 15, 13

Page 73: The Eschatology of Java

An Extract from the Article

@PolymathicCoderThursday, August 15, 13

Page 74: The Eschatology of Java

“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

Page 75: The Eschatology of Java

JAX MagazineAugust 2013 issue

http://jaxenter.com/jax-magazine/

@PolymathicCoderThursday, August 15, 13

Page 76: The Eschatology of Java

Questions/Comments

@PolymathicCoderThursday, August 15, 13

Page 77: The Eschatology of Java

Why do Java Programmers wear glasses?

Because they don’t C#!-Courtesy of @ProgrammingCom

@PolymathicCoderThursday, August 15, 13

Page 78: The Eschatology of Java

Thank You@PolymathicCoder

http://speakerscore.com/sfjug-futureofjava

http://blog.polymathiccoder.com

@PolymathicCoderThursday, August 15, 13