javaforum 20110915
DESCRIPTION
Java 7 har nyss släppts publikt. Vad innehåller den? Vad betyder det för dig? Vilka saker borde du titta extra på? Coin kommer inte att revolutionera din kod, men det kommer att göra den mer kompakt och bugresistent. Invokedynamic är en revolution, för de som är språkastronauter. Det som troligen är värt störst del av din tid är det nya fork/join-ramverket.Mikael kommer även att förklara lite om vad vi gör inom Java i sverige, hur Oracles Java-organisation ser ut och vem som bestämmer vad.TRANSCRIPT
<Insert Picture Here>
Java @Oracle
Mikael Vidstedt
JVM Architect, Oracle Java Platform Group
The following is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any
material, code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.
http://commons.wikimedia.org/wiki/File:Alexander_cuts_the_Gordian_Knot.jpg
Java SWOT – Sun days
Strengths
• Most used programming language
• Garbage collection
• Community driven
• Adaptive runtime
• Install base
• Strong community
• High performance
Weaknesses
•No new releases
•Steward out of cash
•No good Smart phone story
Opportunities
•Multi Core
•JVM interop
•Cloud
Threats
•Next big thing
•Walled garden platforms
•Not attractive to new developers
•Uncertain future
Java SWOT – Oracle
Strengths
•Most used programming language
•Garbage collection
•Community driven
•Adaptive runtime
•Write once…
•Strong community
•High performance
Weaknesses
•No new releases
•Steward out of cash
•No good Smart phone story
Opportunities
•Multi Core
•JVM interop
•Cloud
Threats
•Next big thing
•Walled garden platforms
•Not attractive to new developers
•Uncertain future
•Bad name in community
Oracle’s Java StrategyIn Order of Priority
1. A Vibrant Java Ecosystem
2. Generate Revenue
3. Lower Costs
Java 7
Java 7 = Java 7 + Java 8(a.k.a. Plan B)
Rebranding
Final warning!
System Property Value
java.vendor Oracle Corporation
java.vendor.url http://java.oracle.com
java.specification.vendor Oracle Corporation
java.vm.vendor Oracle Corporation
java.vm.specification.vendor Oracle Corporation
Other
Windows COMPANY file properties (.exe and .dll) Oracle Corporation
src/share/classes/javax/management/build.xml ,
Specification-Vendor
Oracle Corporation
src/share/classes/javax/management/build.xml ,
Implementation-Vendor
“Source bundle from Oracle
Corporation - Customer rebuilt…”
MBeans
/jmx/build/properties, JMX spec vendor Oracle Corporation
/jmx/defaults/ServiceName.java, JXM_SPEC_VENDOR Oracle Corporation
/jmx/defaults/ServiceName.java, JMX_IMPL_VENDOR Oracle Corporation
/management/openmbean/MBeanFeatureInfoSerialStore.j
ava, SERIALIZER_VM_VENDOR
Oracle Corporation
Paradigm level change
“…as simple and as few as possible without having
to surrender the adequate representation…”
Albert Einstein
“As simple as possible, but no simpler”
(not really) Albert Einstein
Merge Sort, Single threaded
function merge_sort(m)
if length(m) ≤ 1
return m
var list left, right, result
var integer middle = length(m) / 2
for each x in m up to middle
add x to left
for each x in m after middle
add x to right
left = merge_sort(left)
right = merge_sort(right)
result = merge(left, right) return result
http://en.wikipedia.org/wiki/Merge_sort
Merge Sort, Double threaded
function double_merge_sort(m)
if length(m) ≤ 1
return m
var list left, right, result
var integer middle = length(m) / 2
for each x in m up to middle
add x to left
for each x in m after middle
add x to right
Thread t2 = new thread()
left = t2.merge_sort(left)
right = merge_sort(right)
return merge(left, right)
http://en.wikipedia.org/wiki/Merge_sort
Merge Sort, n - threads
function n_merge_sort(m)
n = System.GetNoOfCores()
var parts[n] = split(m, n)
var results[n]
var threads[n] = new Thread[n]
For(i = 1 to n)
results[i] = threads[i].merge_sort(parts[i])
Return n_merge(results, threads)
http://en.wikipedia.org/wiki/Merge_sort
Easy! Right?
• Return values from threads
• Synchronization and locks
• Setup cost
• Unbalanced workloads
• Should you really use all HW treads at all times?
What if I just could…
Class MergeSorter<int[]>
… minor plumbing …
Function compute(m)
if length(m) > THRESHHOLD
return merge_sort(m)
leftWorker = New MergeSorter(firstHalf(m))
rightWorker = New MergeSorter(secondHalf(m))
invokeAll (leftWorker, rightWorker)
return merge(leftWorker.result, rightWorker.result)
http://download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html
Fork/Join
• Built-in scalability
– New threads created on demand by framework
– Efficient work balancing using work stealing
• Easy to use!
– No complex synchronization
Nice. What else?
“naming anything „newest‟ because there's already
an older version named „new‟ should be […] sign
that it won't be for very long...”
Nords Law
“Its when you get „Newest2‟ that you know you
really are in trouble”
Topics corollary
NIO.2
• Better file system support
– OS agnostic
– ZIP and JAR
– Directory watch
http://download.oracle.com/javase/tutorial/essential/io/fileio.html
Project Coin
• A number of small language improvements
JSR 292
• Invokedynamic
Graphics
Graphics
• Optimized Java2D pipeline
• Swing JLayer Component
Networking
• SDP support
• SCTP support
• Vista IPv6 stack
Security
• Native ECC provider
• TLS 1.2
• DEP and ASLR on windows
Updates
• JAXP
• JAX-WS, JAXB
• Unicode 6
• BCP47 and UTR35
• Separate locale and interface
• JDBC 4.1
• Rowset 1.1
• Stylesheets for Javadocs!
Lets get ready to rrrruuuumm...
2010 Eclipse Community survey
69,8 + 21.7%
vs
4.6%
n.b. Eclipse users
What about Stockholm & Sweden?
• Development
– JVM
– Mission Control
– Sustaining Engineering
– ...
• Power?
– Senior developers
– Inbound PM
– 2 of 4 architects
– (in Exile) Dev Manager.