Want to dive even deeper?

Take the course Learn Projects in Java for Beginners from Scratch by Eduonix and become an expert!
Learn Projects in Java for Beginners from Scratch
by Eduonix

Check it out!
You're watching a preview of this video, click the button on the left to puchase the full version from Devoxx'10.

The Heads and Tails of Project Coin

CORE JAVA PLATFORM 22641

Published on
  • 2.092
  • 122
  • 0
  • 1
  • 2
  • The Heads and Tails of Project Coin Joseph D. Darcy (@jddarcy) 2 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • #include "std_orcl_disclaimer.h" 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. 3 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Outline · · · · Overview and Demo Retrospective on developing JDK 7 Coin features Possible small language changes in JDK 8 and later Q&A 5 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • JDK 7 Survey · Downloaded JDK 7 GA? ­ JDK7 Mac OS X Port Developer Preview Release http://jdk7.java.net/macportpreview/ · Downloaded JDK 7 update build? http://jdk7.java.net/preview/ · coin-dev subscriber? http://mail.openjdk.java.net/mailman/listinfo/coin-dev/ · OpenJDK contributor? http://openjdk.java.net/contribute/ 6 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Project Coin Benefits Enjoy improved free code flow today! · Remove extra text to make programs more readable · Encourage writing programs that are more reliable · Integrate well with past and future changes 7 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Coin Constraints · Small language changes ­ Specification ­ Implementation ­ Testing · No JVM changes! · Coordinate with forthcoming larger language changes · Beware the hazards of language interactions! 8 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • The Six Coin Features and How They Help · Easier to use generics ­ Diamond ­ Varargs warnings · More concise error handling ­ Multi-catch ­ try-with-resources · Consistency and clarity ­ Strings in switch ­ Literal improvements 9 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Project Coin support in IDEs Pick an IDE, any IDE · IntelliJ IDEA 10.5 and later http://blogs.jetbrains.com/idea/2011/02/announcing-intellij-idea-105-with-full-java-7-support/ · Eclipse 3.7.1 and later http://www.eclipse.org/jdt/ui/r3_8/Java7news/whats-new-java-7.html · NetBeans 7.0 and later http://netbeans.org/kb/docs/java/javase-jdk7.html DEMO 10 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Varargs Warnings · Summary: no longer receive uninformative unchecked compiler warnings from calling platform library methods: ­ <T> List<T> Arrays.asList(T... a) ­ <T> boolean Collections.addAll(Collection<? super T> c, T... elements) ­ <E extends Enum<E>> EnumSet<E> EnumSet.of(E first, E... rest) ­ void javax.swing.SwingWorker.publish(V... chunks) · New annotation type SafeVarargs 12 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • How Coins were Minted · Internal compiler desugaring ­ strings in switch ­ try-with-resources http://www.usmint.gov/about_the_mint/coinLibrary/ Easy for the programmer, more work for the compiler! · Coordinated Library Changes ­ java.lang.{AutoCloseable, SafeVarargs} Throwable.addSuppressed ­ Serialized form of Throwable, new c'tors · Systematic application of new library features 14 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • // Original sugared switch(s) { case "a": case "b": return 10; case "c": case "d": return 20; ... // s mapped to offset switch($t) { case 1: case 2: return 10; case 3: case 4: return 20; ... } } 15 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • // Desugared int $t = -1; switch(s.hashCode()) { case 0x61: // "a".hashCode() if(s.equals("a")) $t = 1; break; case 0x62: if(s.equals("b")) $t = 2; break; ... } // Original sugared switch(s) { case "a": case "b": return 10; case "c": case "d": return 20; ... // s mapped to offset switch($t) { case 1: case 2: return 10; case 3: case 4: return 20; ... } } 16 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • try-with-resources desugaring try ResourceSpecification Block { final VariableModifiers_minus_final R #resource = Expression; Throwable #primaryException = null; try ResourceSpecificationtail Block catch (Throwable #t) { #primaryException = t; throw #t; } finally { if (#resource != null) { if (#primaryException != null) { try { #resource.close(); } catch(Throwable #suppressedException) { #primaryException.addSuppressed(#suppressedException); } } else { #resource.close(); } } } } 17 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Library support for try-with-resources Not just a language feature! · New superinterface java.lang.AutoCloseable ­ All AutoCloseable and by extension java.io.Closeable types usable with try-with-resources · Retrofit Closeable/AutoCloseable to Java SE API ­ JDBC 4.1 retrofitted as AutoCloseable too · Suppressed exceptions are recorded for posterity using a new facility Throwable.addSuppressed ­ Suppressed exception info included in stack trace, etc. 18 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Throwable · New field added to store suppressed exception data · HotSpot specially creates certain exception objects ­ Allow stack traces for OutOfMemoryError ­ Need to document and follow a VM libraries protocol · Serial compatibility must be kept with older releases ­ IIOP serialization matters too! · Exception objects should be able to be immutable ­ New constructors added to Throwable ­ Preserve immutability on serialize deserialize cycle 19 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • A Systematic Update · Ran annotation processors over the JDK ­ Types to be retrofitted as Closeable/AutoCloseable: Project Coin: Bringing it to a Close(able), http://blogs.sun.com/darcy/entry/project_coin_bring_close/ ­ Methods and constructors to be annotated with @SafeVarargs Project Coin: Safe Varargs in JDK Libraries, http://blogs.sun.com/darcy/entry/project_coin_safe_vararg_libraries/ · Can run the same processors over your own code 20 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Retrospective In the beginning... · A small language change needs to be small in all of: http://www.usmint.gov/about_the_mint/coinLibrary/ ­ Specification ­ Implementation ­ Testing · Not the only relevant dimensions 21 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • http://hubblesite.org/gallery/album/the_universe/pr2009002a/xlarge_web/ 22 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • for (Coin coin : jdk7Coins){...} http://www.flickr.com/photos/museumofworldwonders/5446037241/ · · · · · Project Coin specification as a whole Design issues and alternatives, surprises Size of implementation Specification and implementation evolution Bug tail 23 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 24 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Cross references in Java SE 7 JLS 25 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • JLS Sections Changed by Project Coin · Improved Literals §3.10.1 "Integer Literals" §3.10.2 "Floating-Point Literals" · Strings in Switch §14.11 "The switch Statement" · Safe varargs §4.8 "Raw Types" §4.12.2 "Variables of Reference Type" §8.4.1 "Formal Parameters" §9.6.3.7 "SafeVarargs" (New!) §15.12.4.2 "Evaluate Arguments" 26 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. · Diamond §15.9 "Class Instance Creation Expressions" §15.9.1 "Determining the Class being Instantiated" §15.9.3 "Choosing the Constructor and its Arguments" §18 "Syntax"
  • More JLS sections changed by Project Coin · Multi-catch §4.12.4 "final Variables" §11.2.2 "Exception Analysis of Statements" §11.2.3 "Exception Checking" §13.4.4 "Superclasses and Superinterfaces" §14.20 "The try statement" §18 "Syntax" · try-with-resources §4.12.4 "final Variables" §6.3 "Scope of a Declaration" §6.4 "Shadowing and Obscuring" §11.2.2 "Exception Analysis of Statements" §14.20 "The try statement" §14.20.3 "try-with-resources" (New!) §18 "Syntax" 27 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Coin Cross Reference subgraph 28 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 1. Improved literals · Grammar changes a bit tricky to get right; multiple underscores between digits: Digits: Digit Digit DigitsAndUnderscoresopt Digit DigitsAndUnderscores: DigitOrUnderscore DigitsAndUnderscores DigitOrUnderscore 29 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Implication of multiple underscores Do we want this to be allowed? // Courtesy Josh Bloch int bond = 0000_____________0000________0000000000000000__000000000000000000+ 00000000_________00000000______000000000000000__0000000000000000000+ 000____000_______000____000_____000_______0000__00______0+ 000______000_____000______000_____________0000___00______0+ 0000______0000___0000______0000___________0000_____0_____0+ 0000______0000___0000______0000__________0000___________0+ 0000______0000___0000______0000_________000+__0000000000+ 0000______0000___0000______0000________0000+ 000______000_____000______000________0000+ 000____000_______000____000_______00000+ 00000000_________00000000_______0000000+ 0000_____________0000________000000007; 30 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • What about octal? If these are illegal integer literals 0x_abcd 0b_0101 should 0_1234 be legal? 31 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Implementing literals · 1 small changeset · No post-integration surprises 32 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 2. Strings in switch: specification change JLS §14.11 The switch Statement "The type of [the switch] Expression must be char, byte, short, int, Character, Byte, Short, Integer, String, or an enum type (§8.9), or a compile-time error occurs." 33 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Strings in switch proposal form instead of hashCode. Generally a String.equals() check will be needed to verify the candidate string's identity in addition to the evaluation of the screening PROJECT COIN SMALL LANGUAGE CHANGE PROPOSAL FORM v1.0 AUTHOR(S): Joseph D. Darcy function because multiple string inputs could evaluate to the same result. OVERVIEW A single case label, a single case label with a default, and two case labels can be special-cased to just equality checks without function evaluations. If there are collisions in String.hashCode on the set of case labels in a switch block, a different function without collisions on that set of inputs should be used; for Provide a two sentence or shorter description of these five aspects of the feature: example ((long)s.hashCode<<32 ) + s.length()) is another candidate function. FEATURE SUMMARY: Should be suitable as a summary in a language tutorial. Here are desugarings to currently legal Java source for the two examples above where the default hash code do not collide: Add the ability to switch on string values analogous to the existing ability to switch on values of the primitive types. // Simple Example if (s.equals("foo")) { // cause NPE if s is null processFoo(s); } // Advanced example { // new scope for synthetic variables boolean MAJOR ADVANTAGE: What makes the proposal a favorable change? More regular coding patterns can be used for operations selected on the basis of a set of constant string values; the meaning of the new construct should be $take_default = false; boolean $fallthrough = false; $default_label: { switch(s.hashCode()) { // cause NPE if s is null case 3482567: // "quux".hashCode() if (!s.equals("quux")) { $take_default = true; break $default_label; } processQuux(s); $fallthrough = true; case 101574: // "foo".hashCode() if (!$fallthrough && obvious to Java developers. !s.equals("foo")) { $take_default = true; break $default_label; } $fallthrough = true; case 97299: // "bar".hashCode() if (!$fallthrough && !s.equals("bar")) { MAJOR BENEFIT: Wh
  • Strings in switch spec. and implementation What is there to discuss? · What does switching on a null do? · Can null be a case label? · JDK 7 implementation relies on a particular algorithm be used for String.hashCode · Many other implementation options ­ Secondary hash if collisions on primary hash ­ Perfect hash functions ­ Labeled-break 35 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Project Coin: Taking a Break for Strings in Switch http://blogs.oracle.com/darcy/entry/project_coin_string_switch_break static void f(String s) { // Original sugared code switch (s) { case "azvl": System.out.println("azvl: "+s); // fallthrough case "quux": System.out.println("Quux: "+s); // fallthrough case "foo": int i = 5; //fallthrough case "bar": System.out.println("FooOrBar " + (i = 6) + ": "+s); break; case "bmjrabc": // same hash as "azvl" System.out.println("bmjrabc: "+s); break; case "baz": System.out.println("Baz " + (i = 7) + ": "+s); // fallthrough default: System.out.println("default: "+s); } } 36 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. static void f(String s) { // Desugared code $exit: { int i$foo = 0; $default_label: { $baz: { $bmjrabc: { $bar: { $foo: { $quux: { $azvl: { switch(s.hashCode()) { // cause NPE if s is null case 3010735: // "azvl" and "bmjrabc".hashCode() if (s.equals("azvl")) break $azvl; else if (s.equals("bmjrabc")) break $bmjrabc; else break $default_label; case 3482567: // "quux".hashCode() if (!s.equals("quux")) // inequality compare break $default_label; break $quux; case 101574: // "foo".hashCode() if (s.equals("foo")) // equality compare break $foo; break $default_label; case 97299: // "bar".hashCode() if (!s.equals("bar")) break $default_label; break $bar; case 97307: // "baz".hashCode() if (!s.equals("baz")) break $default_label; break $baz; default: break $default_label; }//switch }//azvl System.out.println("azvl: "+s); // fallthrough } //quux System.out.println("Quux: "+s); // fallthrough } //foo i$foo = 5; }//bar System.out.println("FooOrBar " + (i$foo = 6) + ": "+s); break $exit; }//bmjrabc System.out.println("bmjrabc: " + s); break $exit; } //baz System.out.println("Baz " + (i$foo = 7) + ": "+s); // fallthrough }//default_label System.out.println("default: "+s); }//exit }
  • Strings in switch implementation history · Original changeset quickly followed by small refinement · Bug fix in 7u2: switch(s) { case("a"): // Extra parentheses // would crash javac ... 37 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 3. SafeVarargs Background · Often preferable to have a sound system of warnings ­ No missed cases (no false negatives) ­ But may have false positives 38 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • "...the [Java] language is designed to guarantee that if your entire application has been compiled without unchecked warnings [...], it is type safe." Generics in the Java Programming Language http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf Gilad Bracha, Computational Theologist (emer.) 39 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Heap Pollution "Heap pollution can only occur if the program performed some operation involving a raw type that would give rise to a compile-time unchecked warning [...] or if the program aliases an array variable of non-reifiable element type through an array variable of a supertype which is either raw or non-generic." JLS §4.12.2 Variables of Reference Type 41 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Unchecked Warnings and Soundness · Unchecked warnings are intended to be a sound analysis · From a certain point of view, it would be correct (but unhelpful!) to always emit an unchecked warning · Pre-JDK 7, always got an unchecked warning when calling certain varargs library methods ­ Bad, and complicated interaction between generics and arrays ­ But usually nothing actually dangerous happens! 42 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Limits of SafeVarargs · Impractical to standardize a sufficiently powerful sound analysis in JDK 7 ­ ­ ­ ­ Just "read-only" not sufficient Just "invariant" not sufficient Aliasing complicates analysis (Standardizing definitely assigned/definitely unassigned dataflow analysis tricky!) · Leave such standardization for future work; quality of implementation issue in the meantime 43 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • SafeVarargs history · Prototype based on SuppressWarnings · Second implementation based on SafeVarargs ­ What's in a name? @TrustMe @CleanVarargs ... · Very extensive regression/unit tests using auto-generated source files over 7 variables 44 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Designing the SafeVarargs annotation type · Annotations on methods are not inherited · @SafeVarargs can therefore only be applied to ­ Static methods ­ Constructors ­ final instance methods · Additional checks on varargs status, etc. · Runtime retention policy 45 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 4. Diamond <> · Diamond uses type inference to figure out types so the programmer doesn't have to write them · Type inference is a constraint satisfaction problem ­ What are the constraints? ­ How can they be satisfied? · Want a unique answer returned by the algorithm 46 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • More than one facet · Two inference schemes proposed, differing in how they gathered constraints · Each sometimes more useful than the other · Use quantitative analysis to help resolve the issue ­ Prototype both schemes ­ Analyze results on millions of files of code 47 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Quantitative Results · Both schemes equally effective ­ Each could eliminate a different 90% of the explicit type parameters to constructor calls ­ Verified diamond was a worthwhile feature! · Choose inference scheme with better evolution and maintenance properties · Language designer's notebook: Quantitative language design http://www.ibm.com/developerworks/java/library/j-ldn1/ 48 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Hofstadter's Law: "It always takes longer than you expect, "even when you take into account Hofstadter's Law." Douglas Hofstadter Gödel, Escher, Bach: An Eternal Golden Braid 49 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Law of Evolving the Java Language: "There are always more interactions than you expect, "even when you expect lots of interactions." CUSTOMER LOGO 50 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Diamond and anonymous classes public class Box<T> { private T value; public Box(T value) { this.value = value; } Object o; List<?> arg = ...; o = new Box<>(arg); T getValue() { return value; } } 51 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Object o; List<?> arg = ...; o = new Box<List<capture of ?> >(arg); 52 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Object o; List<?> arg = ...; o = new Box<List<capture of ?> >(arg){...}; 53 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Object o; List<?> arg = ...; o = new a$1(arg); Anonymous classes translate into a new class file with a full set of attributes. class a$1 extends Box<List<capture of ?> >{...} 54 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Diamond and generic constructors class Foo<T extends Number> { // The rare generic constructor! <S extends T> Foo(S s) {super();} } Class Explicit Explicit Inferred Constructor Explicit Inferred Explicit Supported Yes Yes No Example new <Integer> Foo<Number>(null); new Foo<Integer>(null); new <Integer> Foo<>(null); // compile error Inferred Inferred Yes new Foo<>(null); Project Coin: Diamond and Generic Constructors http://blogs.oracle.com/darcy/entry/project_coin_diamond_generic_constructors 55 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 5. Multi-catch and more precise rethrow Does it matter if this code doesn't compile in JDK 7? try { throw new DaughterOfFoo(); } catch (Foo exception) { try { // Pre-JDK 7 throws Foo, now throws DaughterOfFoo throw exception; } catch (SonOfFoo anotherException) { ; // Reachable? } } 56 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Multi-catch evolution · Reformulated rules for can-throw computation · Used new "effectively final" analysis · What is the meaning of catch(Foo | SonOfFoo e) {...} ­ Explicitly disallowed in JDK 7 ­ Could be added later 57 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 6. try-with-resources Largest of the Coins · Changes to semantics of desugaring ­ Suppress only Exceptions or all Throwables? ­ Null handling · Syntax changes ­ Allow trailing ";" in resource list ­ Forbid expression form without explicit declaration · Throwable changes · AutoCloseable and InterruptedException 58 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Diamond Design Complexity try-with-resources Multi-catch and more precise rethrow @SafeVarargs Strings in switch Improved literals Implementation Effort 59 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Project Coin Proposals in JDK 7 10 70 Submitted Proposals Per Day 8 50 6 40 30 20 4 2 10 0 0 Days after Opening 60 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Total Submitted Proposals 60
  • JSR 334 Through the JCP Expert Group Formation Early Draft Review Jan 11, 2011 Public Review March 24, 2011 Proposed Final June 24, 2011 Draft JSR Approval Ballot Dec 06, 2010 Final July 5, 2011 Approval Ballot JSR Proposal 62 Nov 16, 2010 July 18, 2011 Final Release Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Project Coin Language Changes in JDK 7 · Methodical and quantitative approach ­ Decide today what needs to be decided today ­ Consciously leave room for future decisions · Language + library co-evolution (But no VM changes for Coin!) · Smooth transition to new features ­ Widespread tool support ­ Use of new features reads well · What about JDK 8? 63 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • Language/compiler changes expected in JDK 8 · Project Lambda: To Multicore and Beyond Alex Buckley and Daniel Smith Bulk Data Handling, Mike Duigou, Thursday, 11:00 am · Project Jigsaw: Putting It All Together, Mark Reinhold Project Jigsaw: Find the Corner Pieces First, Alan Bateman, Mandy Chung, Mark Reinhold · JSR 308 ­ Annotations on Types 64 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • (Very) Small Language changes Under consideration for JDK 8 · Only opportunistic changes given scope of Lambda and Jigsaw · Refinements to JDK 7 Project Coin features ­ try-with-resources on an effectively final variable? ­ Remove some restrictions on diamond? ­ @SafeVarargs on a private method? · Collection literals? · Repeating annotations? · Parameter names available at runtime? 66 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

Comments

Be the first one to add a comment

Thumbnail for: Advanced Git (and GitHub)

Advanced Git (and GitHub)

Mike McQuaid , Chris Kelly

free
Thumbnail for: Java EE Game Changers

Java EE Game Changers

David Blevins

free
Thumbnail for: Build, Test, and Deploy JavaFX Applications with Ease

Build, Test, and Deploy JavaFX Applications with Ease

Andres Almiray , Ixchel Ruiz

free
Thumbnail for: Ask the JDK Architects, Part 2

Ask the JDK Architects, Part 2

Brian Goetz , Jeff Dinkins , John Rose , Mark Reinhold , Mikael Vidstedt

free
Thumbnail for: Java EE 8 Community Update and Panel

Java EE 8 Community Update and Panel

Adam Bien , Bruno Borges , Cameron Purdy , David Blevins , John Clingan , Kevin Sutter , Mark Little

free
Thumbnail for: Adapt DIO APIs to Your Board or Hardware

Adapt DIO APIs to Your Board or Hardware

Jennifer Dority

free
Thumbnail for: Designing a Beautiful REST + JSON API

Designing a Beautiful REST + JSON API

Les Hazlewood

free
Thumbnail for: ARM 64 Ecosystem: AMD and Java

ARM 64 Ecosystem: AMD and Java

Leendert van Doorn , Robert Gomer

free
Thumbnail for: Apache TomEE, Java EE Web Profile, and More on Tomcat

Apache TomEE, Java EE Web Profile, and More on Tomcat

David Blevins

free
Thumbnail for: Java on iOS? Yes, You Can!

Java on iOS? Yes, You Can!

Henric Müller , Niklas Therning

free
Thumbnail for: The Five People in Your Organization Who Grow Legacy Code

The Five People in Your Organization Who Grow Legacy Code

Roberto Cortez

free
Thumbnail for: What’s Next for the WebSocket API?

What’s Next for the WebSocket API?

Pavel Bucek

free
Thumbnail for: Developing On-Device Java Mobile Apps for iOS...and Android Too

Developing On-Device Java Mobile Apps for iOS...and Android Too

Shay Shmeltzer

free
Thumbnail for: RESTFul and Beyond: Servers from the Ground Up

RESTFul and Beyond: Servers from the Ground Up

John Ament

free
Thumbnail for: Java ME 8: Java That Scales from the Desktop to Tiny Embedded

Java ME 8: Java That Scales from the Desktop to Tiny Embedded

Terrence Barr

free
Thumbnail for: The Path to CDI 2.0

The Path to CDI 2.0

Antoine Sabot-Durand , Peter Muir

free
Thumbnail for: Swing Away! Move to JavaFX 8 and the NetBeans Platform

Swing Away! Move to JavaFX 8 and the NetBeans Platform

Gail Anderson , Paul Anderson

free
Thumbnail for: PDF Is Dead; Long Live PDF...and Java!

PDF Is Dead; Long Live PDF...and Java!

Bruno Lowagie , Raf Hens

free
Thumbnail for: JavaFX CSS API

JavaFX CSS API

David Grieve

free
Thumbnail for: JSR 107: Come, Code, Cache, Compute!

JSR 107: Come, Code, Cache, Compute!

Steve Millidge

free
Thumbnail for: How to Program JavaScript in Java

How to Program JavaScript in Java

Anton Epple , Jaroslav Tulach

free
Thumbnail for: Hybrid Mobile Development with Apache Cordova and Java EE 7

Hybrid Mobile Development with Apache Cordova and Java EE 7

Michael Finocchiaro , Ryan Cuprak

free
Thumbnail for: Hybrid Analysis Mapping: Making Security and Java Developer Tools Play Nice Together

Hybrid Analysis Mapping: Making Security and Java Developer Tools Play Nice Together

Dan Cornell

free
Thumbnail for: Powering Your Next Internet of Things App with MQTT

Powering Your Next Internet of Things App with MQTT

Benjamin Cabé , Julien Vermillard

free
Thumbnail for: Tutorial: JVM Platform as a Service

Tutorial: JVM Platform as a Service

Håkan Jonson , Patrik Fredriksson

free
Thumbnail for: Taming the Cloud Database with jclouds

Taming the Cloud Database with jclouds

Zahari Shoylev

free
Thumbnail for: Developing JavaFX RCP with the Eclipse4 Application Platform

Developing JavaFX RCP with the Eclipse4 Application Platform

Tom Schindl

free
Thumbnail for: JavaFX at Eclipse.org

JavaFX at Eclipse.org

Tom Schindl

free
Thumbnail for: API Design Checklist

API Design Checklist

Jaroslav Tulach

free
Thumbnail for: An Auto-Join Network of Internet of Things Devices with a Java SE Embedded Lookup Service

An Auto-Join Network of Internet of Things Devices with a Java SE Embedded Lookup Service

Hinkmond Wong , Benjamin Wesson

free
Thumbnail for: How to Build  Enterprise Mobile Apps That Integrate with  Your Java EE Back End

How to Build Enterprise Mobile Apps That Integrate with Your Java EE Back End

Sébastien Blanc

free
Thumbnail for: Building a Distributed Application for the Cloud with Akka Clustering and Java 8

Building a Distributed Application for the Cloud with Akka Clustering and Java 8

Ryan Knight

free
Thumbnail for: Debugging: The Missing Episode

Debugging: The Missing Episode

Abdelmonaim Remani , Maximino Gomez

free
Thumbnail for: Toward Native JavaScript Performance on the JVM

Toward Native JavaScript Performance on the JVM

Marcus Lagergren

free
Thumbnail for: Microservices on the JVM: A Practical Overview

Microservices on the JVM: A Practical Overview

Martin Eigenbrodt , Alexander Heusingfeld

free
Thumbnail for: Find Your Way Through the Internet of Things Protocols Jungle with MQTT, CoAP, and Java

Find Your Way Through the Internet of Things Protocols Jungle with MQTT, CoAP, and Java

Benjamin Cabé , Julien Vermillard

free
Thumbnail for: Supporting Multitenancy Applications with Java EE

Supporting Multitenancy Applications with Java EE

free
Thumbnail for: Introducing Contexts and Dependency Injection

Introducing Contexts and Dependency Injection

Antoine Sabot-Durand , Peter Muir

free
Thumbnail for: Eclipse and Java 8

Eclipse and Java 8

Jayaprakash Arthanareeswaran

free
Thumbnail for: Eclipse Luna: Java 8 and More

Eclipse Luna: Java 8 and More

Wayne Beaton

free
Thumbnail for: Using MQTT in Real-World M2M Communication

Using MQTT in Real-World M2M Communication

Hans Kamutzki

free
Thumbnail for: Banking on OpenJDK: How Goldman Sachs Is Using and Contributing to OpenJDK

Banking on OpenJDK: How Goldman Sachs Is Using and Contributing to OpenJDK

Sunny Chan , Jessica Man

free
Thumbnail for: I Have a Java 8 Stream

I Have a Java 8 Stream

Paul Sandoz

free
Thumbnail for: Java in the Cloud: The Good Parts

Java in the Cloud: The Good Parts

Alexis Moussine-Pouchkine , Ludovic champenois

free
Thumbnail for: Building Sharded Java Applications with MySQL Fabric

Building Sharded Java Applications with MySQL Fabric

Jess Balint

free
Thumbnail for: BDD in Action: Building Software Right and Building the Right Software

BDD in Action: Building Software Right and Building the Right Software

John Ferguson Smart

free
Thumbnail for: ZombieTime: JSR 310 for the Undead

ZombieTime: JSR 310 for the Undead

Stephen Chin

free
Thumbnail for: Pi on Wheels: DIY Robot for Teaching Java in the Context of the Internet of Things

Pi on Wheels: DIY Robot for Teaching Java in the Context of the Internet of Things

Gerrit Grunwald , Michael Hoffer

free
Thumbnail for: Creating a Java Internet of Things Gateway

Creating a Java Internet of Things Gateway

David Woodard , Wes Johnson

free
Thumbnail for: Enterprise JavaFX with OpenDolphin

Enterprise JavaFX with OpenDolphin

Dierk Koenig

free
Thumbnail for: JSF 2.2 Deep Dive

JSF 2.2 Deep Dive

Kito Mann

free
Thumbnail for: Security Testing for Developers Using OWASP ZAP

Security Testing for Developers Using OWASP ZAP

Simon Bennetts

free
Thumbnail for: Develop Internet of Things Java SE Embedded Apps for MIPS Processors

Develop Internet of Things Java SE Embedded Apps for MIPS Processors

Derek White , Majid Bemanian

free
Thumbnail for: Autumn Collections: From Iterable to Lambdas, Streams, and Collectors

Autumn Collections: From Iterable to Lambdas, Streams, and Collectors

José Paumard

free
Thumbnail for: Introduction to Java DIO APIs

Introduction to Java DIO APIs

Jennifer Dority

free
Thumbnail for: Reco4: A Recommendation Engine Exploiting Machine Learning on Big Data

Reco4: A Recommendation Engine Exploiting Machine Learning on Big Data

Alessandro Negro , Luigi Giuri

free
Thumbnail for: The Modular Java Platform and Project Jigsaw

The Modular Java Platform and Project Jigsaw

Mark Reinhold , Alan Bateman

free
Thumbnail for: Java Code Coverage with JCov: Implementation Details and Use Cases

Java Code Coverage with JCov: Implementation Details and Use Cases

Aleksandre Iline

free
Thumbnail for: When to Use a Graph Database

When to Use a Graph Database

Tobias Lindaaker

free
Thumbnail for: GS Collections and Java 8: Functional, Fluent, Friendly, and Fun

GS Collections and Java 8: Functional, Fluent, Friendly, and Fun

Craig Motlin , Donald Raab

free
Thumbnail for: Functional UIs with Java 8 and Vaadin

Functional UIs with Java 8 and Vaadin

Henri Muurimaa

free
Thumbnail for: MessageBus: A High-Level Async Buffer-Based API for TCP/UDP/SDP/InfiniBand

MessageBus: A High-Level Async Buffer-Based API for TCP/UDP/SDP/InfiniBand

Harold Carr

free
Thumbnail for: Faster Object Arrays

Faster Object Arrays

Gil Tene , John Cuthbertson

free
Thumbnail for: Taming Hadoop on a Low-Power Cluster

Taming Hadoop on a Low-Power Cluster

Monica Beckwith

free
Thumbnail for: Brewing Your Very Own IDE: A How-To Guide

Brewing Your Very Own IDE: A How-To Guide

Konstantin Bulenkov

free
Thumbnail for: Put a Firewall in Your JVM, Securing Java Applications

Put a Firewall in Your JVM, Securing Java Applications

Debbie Fuller , Prateep Bandharangshi , Hussein Badakhchani

free
Thumbnail for: Platform Upgrades as a Service

Platform Upgrades as a Service

Raj Nagarajan , Robert Enyedi , zhong chen

free
Thumbnail for: FIRST Robotics and Java SE Embedded

FIRST Robotics and Java SE Embedded

Derek White

free
Thumbnail for: Understanding the New JDK 8 Security Features

Understanding the New JDK 8 Security Features

Sean Mullan

free
Thumbnail for: Groovy in the Light of Java 8

Groovy in the Light of Java 8

Cédric Champeau , Guillaume Laforge

free
Thumbnail for: Introduction to Apache jclouds

Introduction to Apache jclouds

Everett Toews

free
Thumbnail for: Securing Against Cross-Site Request Forgery in a Way You Won’t Regret Later

Securing Against Cross-Site Request Forgery in a Way You Won’t Regret Later

Aaron Hurst

free
Thumbnail for: Java Champions and JUG Leaders Meet Oracle Executives

Java Champions and JUG Leaders Meet Oracle Executives

Georges Saab , Henrik Ståhl , Mattias Karlsson , Peter Utzschneider , Robert Clark

free
Thumbnail for: Create an Agile Learning Organization for Developers

Create an Agile Learning Organization for Developers

Mattias Karlsson

free
Thumbnail for: Security Solutions for Java Distributed Architectures: A Smart Grid Use Case

Security Solutions for Java Distributed Architectures: A Smart Grid Use Case

Frederic Vaute , Marc Muller , Pierre Girard

free
Thumbnail for: Virtualization-Aware Java

Virtualization-Aware Java

Dinakar Guniguntala

free
Thumbnail for: Internet of Boats: How IoT and Java Embedded Are Helping Boats Be Smarter, Faster, and Safer

Internet of Boats: How IoT and Java Embedded Are Helping Boats Be Smarter, Faster, and Safer

VINICIUS SENGER , YARA SENGER

free
Thumbnail for: Modular Architectures Using Microservices

Modular Architectures Using Microservices

Marcel Offermans

free
Thumbnail for: Groovy in 2014 and Beyond

Groovy in 2014 and Beyond

Guillaume Laforge

free
Thumbnail for: REST Assured: Hypermedia APIs with Spring MVC

REST Assured: Hypermedia APIs with Spring MVC

Oliver Gierke

free
Thumbnail for: DukeScript: How to Put the <i>Java</i> into <i>JavaScript</i>

DukeScript: How to Put the <i>Java</i> into <i>JavaScript</i>

Anton Epple

free
Thumbnail for: Architectures for the Internet of Things with the End-to-End Java Platform

Architectures for the Internet of Things with the End-to-End Java Platform

VINICIUS SENGER , YARA SENGER

free
Thumbnail for: Java ME 8 Versus Java SE 8: What Developers Need to Know

Java ME 8 Versus Java SE 8: What Developers Need to Know

Terrence Barr

free
Thumbnail for: Create JavaFX Layouts Like a Boss

Create JavaFX Layouts Like a Boss

MIkael Grev

free
Thumbnail for: JDK 8 for Mobile iOS and Android Devices

JDK 8 for Mobile iOS and Android Devices

Hinkmond Wong , Anki Nelaturu , Srinivas Indla

free
Thumbnail for: New Tricks for Old Dogs: Collections in Java 8

New Tricks for Old Dogs: Collections in Java 8

Michael Duigou

free
Thumbnail for: Debt and Deprecation

Debt and Deprecation

Dr. Deprecator , Stuart Marks

free
Thumbnail for: Developing Internet of Things Retail Inventory Control/Sales Monitoring

Developing Internet of Things Retail Inventory Control/Sales Monitoring

Hinkmond Wong

free
Thumbnail for: Software Lessons Learned from NASA and Other Security Organizations

Software Lessons Learned from NASA and Other Security Organizations

Angelo D'Agnano , Chris Heidt , Geertjan Wielenga , IOANNIS KOSTARAS , Sal Cardinale , Sean Phillips

free
Thumbnail for: Graph All the Things: Graph Database Use Cases That Aren’t Social

Graph All the Things: Graph Database Use Cases That Aren’t Social

Emil Eifrem

free
Thumbnail for: Anzeneering

Anzeneering

Joshua Kerievsky

free
Thumbnail for: Rapid Internet of Things UI with JavaFX and Scene Builder

Rapid Internet of Things UI with JavaFX and Scene Builder

Jasper Potts , Moises Chicharro

free
Thumbnail for: Programming the Real World

Programming the Real World

Jasper Potts , Richard Bair

free
Thumbnail for: Java 8 Concurrency and Collections: What’s New

Java 8 Concurrency and Collections: What’s New

Chris Hegarty , Michael Duigou

free
Thumbnail for: Scalable JavaScript Applications with Project Nashorn

Scalable JavaScript Applications with Project Nashorn

Leonardo Zanivan , Michel Graciano

free
Thumbnail for: Clojure in the Cloud

Clojure in the Cloud

Everett Toews

free
Thumbnail for: Combining Collections and Concurrency

Combining Collections and Concurrency

Chris Hegarty , Michael Duigou

free
Thumbnail for: Debugging and Profiling Robots with James Gosling

Debugging and Profiling Robots with James Gosling

Geertjan Wielenga , James Gosling , Jens Deters , José Pereda , Mark Heckler

free
Thumbnail for: Getting Actionable Intelligence from the Internet of Things

Getting Actionable Intelligence from the Internet of Things

Tim Kellogg

free
Thumbnail for: Inside Tomax’s Transformation to a Reactive Architecture

Inside Tomax’s Transformation to a Reactive Architecture

Ryan Knight , Scott Lewis

free
Thumbnail for: ARM: Over 10 Billion Served—“Want 64-Bit Support with That?”

ARM: Over 10 Billion Served—“Want 64-Bit Support with That?”

David Holmes , Zach Shelby

free
Thumbnail for: Learn How to Create Your Own Java and Internet of Things Workshop

Learn How to Create Your Own Java and Internet of Things Workshop

Anthony Lai , Noel Portugal

free
Thumbnail for: Understanding Java Garbage Collection

Understanding Java Garbage Collection

Gil Tene

free
Thumbnail for: Real-Time Financial Applications Using JavaFX

Real-Time Financial Applications Using JavaFX

Scott Sue

free
Thumbnail for: Understanding Latency and Response Time: Pitfalls and Key Lessons

Understanding Latency and Response Time: Pitfalls and Key Lessons

Gil Tene

free
Thumbnail for: Java Secure Coding Guidelines

Java Secure Coding Guidelines

Andrew Gross

free
Thumbnail for: With GC Solved, What Else Makes a JVM Pause?

With GC Solved, What Else Makes a JVM Pause?

John Cuthbertson

free
Thumbnail for: Simplifying Development of Mixed-Language Java and C++ Applications

Simplifying Development of Mixed-Language Java and C++ Applications

Dmitry Zharkov , Ikroop Dhillon , Petr Kudryavtsev

free
Thumbnail for: Developing On-Device iOS and Android Apps with Java

Developing On-Device iOS and Android Apps with Java

Shay Shmeltzer

free
Thumbnail for: Preventing Errors Before They Happen

Preventing Errors Before They Happen

Werner Dietl

free
Thumbnail for: Ask the JDK Architects, Part 1

Ask the JDK Architects, Part 1

Brian Goetz , Jeff Dinkins , John Rose , Mark Reinhold , Mikael Vidstedt

free
Thumbnail for: Create Elegant Builds at Scale with Gradle

Create Elegant Builds at Scale with Gradle

Hans Dockter

free
Thumbnail for: Broadening JCP Program Participation

Broadening JCP Program Participation

Arun Gupta , Bruno Souza , Heather VanCura , James Curran , Nicholas Wright , Steve Millidge

free
Thumbnail for: Securing Java: Track Opening Presentation

Securing Java: Track Opening Presentation

Milton Smith

free
Thumbnail for: Devoxx4Kids for Parents

Devoxx4Kids for Parents

Arun Gupta , Daniel De Luca , Stephan Janssen

free
Thumbnail for: Building Secure Applications with Java EE

Building Secure Applications with Java EE

Patrycja Wegrzynowicz

free
Thumbnail for: Java PaaS: Truly Enabling CI, CD, and DevOps

Java PaaS: Truly Enabling CI, CD, and DevOps

Jimmy Ray

free
Thumbnail for: GridGain In-Memory Data Fabric: Speed and Scale for Transactions and Analytics

GridGain In-Memory Data Fabric: Speed and Scale for Transactions and Analytics

Tatiana Staffaroni , Dmitriy Setrakyan

free
Thumbnail for: Speed-Developing a Java App to Delight Users with IBM

Speed-Developing a Java App to Delight Users with IBM

Michael Fraenkel , Monica Rivera , Rachel Reinitz

free
Thumbnail for: Mobile, APIs, and the Cloud: A Field Perspective

Mobile, APIs, and the Cloud: A Field Perspective

Roland Barcia , Monica Rivera

free
Thumbnail for: Ten Reasons Why Java Now Rocks More Than Ever

Ten Reasons Why Java Now Rocks More Than Ever

Geert Bevin

free
Thumbnail for: Get Back in Control of Your SQL with jOOQ

Get Back in Control of Your SQL with jOOQ

Lukas Eder

free
Thumbnail for: NASA Mission Software Development on the Eights: Java 8, JavaFX 8, and NetBeans 8

NASA Mission Software Development on the Eights: Java 8, JavaFX 8, and NetBeans 8

Keith Chapman , Nick Sabey , Sean Henely , Sean Phillips

free
Thumbnail for: Beyond the Basics of SonarQube: Improve Your Java(Script) Code Even Further

Beyond the Basics of SonarQube: Improve Your Java(Script) Code Even Further

Johan Janssen

free
Thumbnail for: Scaling a Mobile Startup Through the Cloud: A True Story

Scaling a Mobile Startup Through the Cloud: A True Story

Chen Fishbein , Shai Almog

free
Thumbnail for: Tweet for Beer! Beer Tap Powered by Java Goes Internet of Things and JavaFX

Tweet for Beer! Beer Tap Powered by Java Goes Internet of Things and JavaFX

Bruno Borges , Marco Antonio Maciel

free
Thumbnail for: Packaging Your JavaFX Apps for the Mac and the Mac App Store

Packaging Your JavaFX Apps for the Mac and the Mac App Store

Danno Ferrin , David Dehaven

free
Thumbnail for: Java EE 7 Recipes for Concurrency

Java EE 7 Recipes for Concurrency

Josh Juneau

free
Thumbnail for: Class Transformer: One of the Best-Kept Java Secrets

Class Transformer: One of the Best-Kept Java Secrets

Bernd Müller

free
Thumbnail for: SnapCoding for Education

SnapCoding for Education

Jeff Martin

free
Thumbnail for: Future of Development and the Cloud

Future of Development and the Cloud

Ken Sipe

free
Thumbnail for: Advanced Java Unit Testing with Spock

Advanced Java Unit Testing with Spock

Ken Sipe

free
Thumbnail for: Java EE 7 Recipes

Java EE 7 Recipes

Josh Juneau

free
Thumbnail for: Twins: FP and OOP

Twins: FP and OOP

Richard Warburton

free
Thumbnail for: Productive JavaFX 8

Productive JavaFX 8

Adam Bien

free
Thumbnail for: Sensor Networks with Java SE Embedded and Java(FX)

Sensor Networks with Java SE Embedded and Java(FX)

Gerrit Grunwald

free
Thumbnail for: When Basketball Meets Raspberry Pi and Android Devices and TomEE

When Basketball Meets Raspberry Pi and Android Devices and TomEE

Stephan Janssen

free
Thumbnail for: Enterprise JavaFX

Enterprise JavaFX

Hendrik Ebbers

free
Thumbnail for: Applying Groovy Closures for Fun and Productivity

Applying Groovy Closures for Fun and Productivity

Venkat Subramaniam

free
Thumbnail for: Universal Development Kit for Creating and Deploying Smart Home/Building Applications

Universal Development Kit for Creating and Deploying Smart Home/Building Applications

Frederic Vaute , Oleg Logvinov

free
Thumbnail for: Building Reliable Remote Communication Devices with Java ME 8

Building Reliable Remote Communication Devices with Java ME 8

Leonardo Lima

free
Thumbnail for: Security Starts in the Head(er)

Security Starts in the Head(er)

Dominik Schadow

free
Thumbnail for: Driving the Java Carputer Farther and Faster

Driving the Java Carputer Farther and Faster

Simon Ritter , Thomas Angelucci

free
Thumbnail for: Reactive UIs with the Model-View-View-Model (MVVM) Pattern: Simple with Ankor.io

Reactive UIs with the Model-View-View-Model (MVVM) Pattern: Simple with Ankor.io

Manfred Geiler , Thomas Spiegl

free
Thumbnail for: Inside the CERT Oracle Secure Coding Standard for Java

Inside the CERT Oracle Secure Coding Standard for Java

David Svoboda , Robert Seacord

free
Thumbnail for: RESTing on Your Laurels Will Get You Pwned

RESTing on Your Laurels Will Get You Pwned

Abraham Kang

free
Thumbnail for: Automated Vehicle Testing with Java

Automated Vehicle Testing with Java

Paul Perrone

free
Thumbnail for: Tools Worth Sharing: Take Back Your IDE with Forge

Tools Worth Sharing: Take Back Your IDE with Forge

George Gastaldi , Lincoln Baxter III

free
Thumbnail for: How to Build the Game 2048 with JavaFX and Java 8: Lessons Learned

How to Build the Game 2048 with JavaFX and Java 8: Lessons Learned

Bruno Borges , José Pereda

free
Thumbnail for: Code-Level Security Games and Puzzles in Java

Code-Level Security Games and Puzzles in Java

Brenton Phillips

free
Thumbnail for: Who Could Resist Controlling a NAO Robot with Java?

Who Could Resist Controlling a NAO Robot with Java?

Erwan Pinault , Nicolas Rigaud

free
Thumbnail for: Writing Recommender Systems with Java: An Introduction

Writing Recommender Systems with Java: An Introduction

Adam Warski

free
Thumbnail for: Security with Java Deployment

Security with Java Deployment

Christopher Bensen , David Dehaven

free
Thumbnail for: Best Practices for Efficient Java ME Programming

Best Practices for Efficient Java ME Programming

Andrey Petushkov

free
Thumbnail for: Fiction or Reality? Gesture Control and the New Wave of 3-D Camera Devices

Fiction or Reality? Gesture Control and the New Wave of 3-D Camera Devices

Martin Förtsch , Thomas Endres

free
Thumbnail for: Scene Builder Embedding and Assimilation

Scene Builder Embedding and Assimilation

Sven Reimers

free
Thumbnail for: Open Heart Surgery: Analyzing and Debugging the Java HotSpot VM at the OS Level

Open Heart Surgery: Analyzing and Debugging the Java HotSpot VM at the OS Level

Volker Simonis

free
Thumbnail for: Seven Security Tools and Libraries Every Developer Should Know About

Seven Security Tools and Libraries Every Developer Should Know About

Dominik Schadow

free
Thumbnail for: RIA Technologies and Frameworks Panel

RIA Technologies and Frameworks Panel

Andres Almiray , Gerrit Grunwald , Kevin Nilson , Max Katz , Sven Reimers

free
Thumbnail for: JavaFX 3D Animation: Bringing Duke to Life

JavaFX 3D Animation: Bringing Duke to Life

John Yoon

free
Thumbnail for: Script Bowl 2014: The Battle Rages On

Script Bowl 2014: The Battle Rages On

Guillaume Laforge , Priyatam Mudivarti , R Tyler Croy , Raghavan , Ryan Knight

free
Thumbnail for: Diagnosing Performance Issues with Thermostat

Diagnosing Performance Issues with Thermostat

Mario Torre , Omair Majid

free
Thumbnail for: Enhanced Metadata in Java SE 8

Enhanced Metadata in Java SE 8

Alexander Buckley , Joseph Darcy

free
Thumbnail for: Building Small and Efficient Internet of Things Applications with Concierge

Building Small and Efficient Internet of Things Applications with Concierge

Jan Rellermeyer , Tim Verbelen

free
Thumbnail for: Java-Based Architecture for the Internet of Things

Java-Based Architecture for the Internet of Things

Noel Poore , Pete St pierre

free
Thumbnail for: What Every Java Programmer Should Know About Floating-Point Arithmetic

What Every Java Programmer Should Know About Floating-Point Arithmetic

Joseph Darcy

free
Thumbnail for: Building Custom JavaFX Controls

Building Custom JavaFX Controls

Jonathan Giles

free
Thumbnail for: Sumatra OpenJDK Project Update: Parallelize Yourself with the Stream API

Sumatra OpenJDK Project Update: Parallelize Yourself with the Stream API

Eric Caspole

free
Thumbnail for: Device I/O API in a Nutshell

Device I/O API in a Nutshell

Sergey Nazarkin

free
Thumbnail for: What’s Cool in the SAP JVM

What’s Cool in the SAP JVM

Volker Simonis

free
Thumbnail for: The New JavaFX Accessibility API

The New JavaFX Accessibility API

Felipe Heidrich , Stephen Northover

free
Thumbnail for: CERN Private Java Cloud: Deep Dive into On-Demand PaaS Internals

CERN Private Java Cloud: Deep Dive into On-Demand PaaS Internals

Luis Rodriguez

free
Thumbnail for: Ceylon from Here to Infinity: The Big Picture and What’s Coming

Ceylon from Here to Infinity: The Big Picture and What’s Coming

Stephane Epardaud

free
Thumbnail for: Lambda-izing JavaFX

Lambda-izing JavaFX

Felipe Heidrich , Stephen Northover

free
Thumbnail for: Coding for the Future: The IDE (R)evolution for the Next Generation

Coding for the Future: The IDE (R)evolution for the Next Generation

Ashwin Rao , Geertjan Wielenga , John Ceccarelli

free
Thumbnail for: Java Versus JavaScript: Head to Head

Java Versus JavaScript: Head to Head

Chris Bailey

free
Thumbnail for: JavaFX CSS: Hacking Unsupported Features

JavaFX CSS: Hacking Unsupported Features

David Grieve

free
Thumbnail for: Smart Homes for the Masses

Smart Homes for the Masses

Jochen Hiller , Kai Kreuzer

free
Thumbnail for: JavaFX Versus HTML5

JavaFX Versus HTML5

David Grieve , Ryan Cuprak

free
Thumbnail for: Applying Java’s Cryptography

Applying Java’s Cryptography

Erik Costlow

free
Thumbnail for: Parallel Streams Workshop

Parallel Streams Workshop

Stuart Marks

free
Thumbnail for: Next Step in Automation: Elastic Build Environment

Next Step in Automation: Elastic Build Environment

Jesse Glick , Kohsuke Kawaguchi

free
Thumbnail for: Integrating Swing with JavaFX

Integrating Swing with JavaFX

Kevin Rushforth , Stephen Northover

free
Thumbnail for: Introduction to HotSpot Internals

Introduction to HotSpot Internals

Paul Nauman

free
Thumbnail for: OpenJFX for Embedded Devices

OpenJFX for Embedded Devices

David Hill , Lisa Selle

free
Thumbnail for: Taking the Application Server to Web Scale with Netflix Open Source Software

Taking the Application Server to Web Scale with Netflix Open Source Software

David Currie

free
Thumbnail for: The JavaFX Community and Ecosystem

The JavaFX Community and Ecosystem

Alexander Casall , Hendrik Ebbers , James Weaver

free
Thumbnail for: Functional Programming the Groovy Way

Functional Programming the Groovy Way

Andres Almiray , Ixchel Ruiz

free
Thumbnail for: Gradle: Harder, Better, Stronger, Faster

Gradle: Harder, Better, Stronger, Faster

Andres Almiray , Ixchel Ruiz

free
Thumbnail for: From the Tank Farm to the Handheld

From the Tank Farm to the Handheld

Rabindra Chakraborty , Jay Kalra , Kanishk Soni

free
Thumbnail for: Rhinoceros on the Loose: Applied Real-World Projects with Java and JavaScript

Rhinoceros on the Loose: Applied Real-World Projects with Java and JavaScript

Viktor Gamov

free
Thumbnail for: The Top 10 Hadoop Patterns and Antipatterns

The Top 10 Hadoop Patterns and Antipatterns

Alex Holmes

free
Thumbnail for: Welcome to Agroville: A Mind-stormish Demo of Java Controlling an Entire Farm

Welcome to Agroville: A Mind-stormish Demo of Java Controlling an Entire Farm

Eva Veenstra-Kazakov , Timon Veenstra

free
Thumbnail for: DataFX: From External Data to a UI Flow and Back

DataFX: From External Data to a UI Flow and Back

Hendrik Ebbers , Johan Vos , Jonathan Giles

free
Thumbnail for: Multitenant Java for High-Density Cloud Deployments

Multitenant Java for High-Density Cloud Deployments

Michael Dawson

free
Thumbnail for: Supercharging Reflective Libraries with InvokeDynamic

Supercharging Reflective Libraries with InvokeDynamic

Ian Robertson

free
Thumbnail for: Efficiently Building and Deploying Microservices

Efficiently Building and Deploying Microservices

Bart Blommaerts

free
Thumbnail for: Extremely Small Yet Powerful

Extremely Small Yet Powerful

Artur Pilipenko

free
Thumbnail for: Rapid Modernization of Java Applications to JDK 8

Rapid Modernization of Java Applications to JDK 8

G Venkat

free
Thumbnail for: Java ME Platform Fueled by New Tooling Architecture

Java ME Platform Fueled by New Tooling Architecture

Serge Troshin

free
Thumbnail for: Reactive Modeling of Automotive User Interfaces with JavaFX

Reactive Modeling of Automotive User Interfaces with JavaFX

Jens Ehrke , Simon Gerlach

free
Thumbnail for: Best Practices for Evaluating and Optimizing Java Applications for a Cloud App Stack

Best Practices for Evaluating and Optimizing Java Applications for a Cloud App Stack

Hui Shi

free
Thumbnail for: Java and mbed Make Embedded Real

Java and mbed Make Embedded Real

Andrey Petushkov , Bogdan Marinescu

free
Thumbnail for: Data Partitioning and Distributed Computing with Hazelcast

Data Partitioning and Distributed Computing with Hazelcast

Noctarius ツ

free
Thumbnail for: Is Your Code Parallel-Ready?

Is Your Code Parallel-Ready?

Maurice Naftalin

free
Thumbnail for: OSGi-Based Architecture for Internet of Things Gateways

OSGi-Based Architecture for Internet of Things Gateways

Dimitar Valtchev

free
Thumbnail for: OK, We Have 500 User Group Members. Now What? (Growing from Within)

OK, We Have 500 User Group Members. Now What? (Growing from Within)

Freddy Guime , Robert Paulin

free
Thumbnail for: Java in the Air: A Case Study for Java-Based Environment Monitoring Stations

Java in the Air: A Case Study for Java-Based Environment Monitoring Stations

Andy Gilbert , Luca Dazi , Marco Carrer

free
Thumbnail for: Bridging the Worlds of IT and Robotics

Bridging the Worlds of IT and Robotics

Christian Tarragona , Günther Dörner , Alexander Chekler

free
Thumbnail for: Project Avatar: More Than Just Node.js on the JVM—Java EE Written in JavaScript

Project Avatar: More Than Just Node.js on the JVM—Java EE Written in JavaScript

Heiko Spindler , Niko Köbler

free
Thumbnail for: Unleash Green Energy to Power Your Raspberry Pi with Java ME

Unleash Green Energy to Power Your Raspberry Pi with Java ME

Alexander Belokrylov , Alexander Mironenko

free
Thumbnail for: Going Native: Bringing FFI to the JVM

Going Native: Bringing FFI to the JVM

Charles Nutter

free
Thumbnail for: The Java Time API in Java SE 8: What You Need to Know

The Java Time API in Java SE 8: What You Need to Know

Roger Riggs

free
Thumbnail for: Practical Guide to Making Your Home Smart with Java ME Embedded

Practical Guide to Making Your Home Smart with Java ME Embedded

Alexander Belokrylov , Alexander Mironenko

free
Thumbnail for: OSv: The Operating System Designed for Java and the Cloud

OSv: The Operating System Designed for Java and the Cloud

Don Marti , Glauber Costa

free
Thumbnail for: The Science and Art of Backward Compatibility

The Science and Art of Backward Compatibility

Ian Robertson

free
Thumbnail for: Extreme Continuous Delivery at Unruly

Extreme Continuous Delivery at Unruly

Alex Wilson , Benjamin Weber

free
Thumbnail for: Plugging into the Java Compiler

Plugging into the Java Compiler

Christian Gruber , Éamonn McManus

free
Thumbnail for: DDD in a Rapidly Changing Organization

DDD in a Rapidly Changing Organization

Benjamin Weber

free
Thumbnail for: Running Your Spring Apps in the Cloud

Running Your Spring Apps in the Cloud

Cornelia Davis

free
Thumbnail for: The Emerging Languages Bowl: The Big League Challenge

The Emerging Languages Bowl: The Big League Challenge

Charles Nutter , Dierk Koenig , Hadi Hariri , Raghavan , Stephane Epardaud

free
Thumbnail for: Performance Challenges Along the Continuous Delivery Pipeline

Performance Challenges Along the Continuous Delivery Pipeline

Wolfgang Gottesheim

free
Thumbnail for: Test-Driven Development with JavaFX

Test-Driven Development with JavaFX

Sven Ruppert , Hendrik Ebbers

free
Thumbnail for: Principles of Evolutionary Architecture

Principles of Evolutionary Architecture

Rebecca Parsons

free
Thumbnail for: Getting Started with MongoDB and Java

Getting Started with MongoDB and Java

Justin Lee

free
Thumbnail for: JPA Gotchas and Best Practices: Lessons from Overstock.com

JPA Gotchas and Best Practices: Lessons from Overstock.com

Neil Hartner

free
Thumbnail for: JavaScript Across Tiers with Nashorn and Avatar.js

JavaScript Across Tiers with Nashorn and Avatar.js

Jean De Lavarene , Kuassi Mensah , Nirmala Sundarappa

free
Thumbnail for: High Security for the Internet of Things with Java and a Secure Element

High Security for the Internet of Things with Java and a Secure Element

Anne-Laure SIXOU , Bousquet Thierry , Frederic Vaute

free
Thumbnail for: JavaFX in the Cloud with OpenDolphin

JavaFX in the Cloud with OpenDolphin

Dierk Koenig

free
Thumbnail for: Stop! Or My Duke Will Shoot!

Stop! Or My Duke Will Shoot!

Dierk Koenig

free
Thumbnail for: Transactions Returning to NoSQL

Transactions Returning to NoSQL

Mark Little

free
Thumbnail for: Applied DDD in a Java EE 7 and Open Source World

Applied DDD in a Java EE 7 and Open Source World

Edson Yanaga

free
Thumbnail for: Retrofitting OAuth 2.0 Security into Existing REST Services

Retrofitting OAuth 2.0 Security into Existing REST Services

Irena Shaigorodsky

free
Thumbnail for: Rich HTML5 Web Apps: Typesafe Edition 2

Rich HTML5 Web Apps: Typesafe Edition 2

Christian Sadilek , Jonathan Fuerth

free
Thumbnail for: Lessons Learned from a Large-Scale Java Web Application

Lessons Learned from a Large-Scale Java Web Application

Paul Bakker , Jago de Vreede

free
Thumbnail for: Mob Programming: A Whole Team Approach

Mob Programming: A Whole Team Approach

Woody Zuill

free
Thumbnail for: Performance from Predictability

Performance from Predictability

Richard Warburton

free
Thumbnail for: Anatomy of Another Java Zero-Day Exploit

Anatomy of Another Java Zero-Day Exploit

David Svoboda , Yozo Toda

free
Thumbnail for: Writing Highly Concurrent Polyglot Applications with Vert.x

Writing Highly Concurrent Polyglot Applications with Vert.x

Tim Fox

free
Thumbnail for: Building Java Applications with JavaFX 8 and Java EE 7

Building Java Applications with JavaFX 8 and Java EE 7

Bruno Borges

free
Thumbnail for: Pushing Java EE Outside the Enterprise Space: Home Automation and the Internet of Things

Pushing Java EE Outside the Enterprise Space: Home Automation and the Internet of Things

David Delabassee

free
Thumbnail for: Testing Java EE Applications with Arquillian

Testing Java EE Applications with Arquillian

Reza Rahman

free
Thumbnail for: Querying Massive Data Sets in the Cloud with BigQuery and Java

Querying Massive Data Sets in the Cloud with BigQuery and Java

Kon Soulianidis

free
Thumbnail for: Java Performance: Hardware, Structures, and Algorithms

Java Performance: Hardware, Structures, and Algorithms

Charlie Hunt , Darryl Gove

free
Thumbnail for: Be in Control of Your JavaFX Mission

Be in Control of Your JavaFX Mission

Marcus Hirt , Oleg Mazurov

free
Thumbnail for: Using the Same Docker Container for Development and in the Cloud

Using the Same Docker Container for Development and in the Cloud

Johan Janssen

free
Thumbnail for: Applied Domain-Driven Design Blueprints for Java EE

Applied Domain-Driven Design Blueprints for Java EE

Reza Rahman , Vijay Nair

free
Thumbnail for: Code Generation in the Java Compiler: Annotation Processors Do the Hard Work

Code Generation in the Java Compiler: Annotation Processors Do the Hard Work

Jorge Hidalgo

free
Thumbnail for: Packaging and Deploying Java Apps in Java 8u20

Packaging and Deploying Java Apps in Java 8u20

Danno Ferrin

free
Thumbnail for: In Control with ControlsFX

In Control with ControlsFX

Eugene Ryzhikov , Jonathan Giles

free
Thumbnail for: Transforming Business-Driven to Technology-Driven Organizations

Transforming Business-Driven to Technology-Driven Organizations

David Greenfield , Davinder Kohli

free
Thumbnail for: JSF 2.2 in Action

JSF 2.2 in Action

Kito Mann

free
Thumbnail for: Caching: Getting Precise with Your Golden Hammer

Caching: Getting Precise with Your Golden Hammer

Amit Goyal , Ian Simpson

free
Thumbnail for: Keeping Memory Leaks at Bay

Keeping Memory Leaks at Bay

Nikita Salnikov-Tarnovski

free
Thumbnail for: Democratizing Development Metrics

Democratizing Development Metrics

Christopher W H Davis

free
Thumbnail for: Programmatic WebSocket

Programmatic WebSocket

Raghuram Krishnamachari , Steven Lemmo

free
Thumbnail for: TypeScript for Java Developers

TypeScript for Java Developers

Sander Mak

free
Thumbnail for: Leveraging Scala Macros for Better Validation

Leveraging Scala Macros for Better Validation

Tomer Gabel

free
Thumbnail for: Mobile JavaServer Faces

Mobile JavaServer Faces

Kito Mann

free
Thumbnail for: When to NoSQL and When to Know SQL

When to NoSQL and When to Know SQL

Simon Elliston Ball

free
Thumbnail for: Map, Flatmap, and Reduce Are Your New Best Friends

Map, Flatmap, and Reduce Are Your New Best Friends

Chris Richardson

free
Thumbnail for: Cloud Developer’s DHARMA: Redefining “Done” for Cloud Applications

Cloud Developer’s DHARMA: Redefining “Done” for Cloud Applications

Daniel Bryant

free
Thumbnail for: Spring 4TW!

Spring 4TW!

Josh Long

free
Thumbnail for: Using Java on Wearable Devices Featuring a Hybrid Architecture

Using Java on Wearable Devices Featuring a Hybrid Architecture

Aaron Moore , Nicola La Gloria

free
Thumbnail for: JSON Pointer and JSON Patch: Updates to the Java API for JSON Processing

JSON Pointer and JSON Patch: Updates to the Java API for JSON Processing

Kinman Chung

free
Thumbnail for: 50 JMS 2.0 Best Practices in 50 Minutes

50 JMS 2.0 Best Practices in 50 Minutes

Nigel Deakin

free
Thumbnail for: Where Is My Memory?

Where Is My Memory?

Nikita Salnikov-Tarnovski

free
Thumbnail for: TypeScript for Java Developers: Coding JavaScript Without the Pain

TypeScript for Java Developers: Coding JavaScript Without the Pain

Sander Mak

free
Thumbnail for: Vert.x + WebSocket + Cloud = Awesome Map Tracking

Vert.x + WebSocket + Cloud = Awesome Map Tracking

Steven Pousty

free
Thumbnail for: Shenandoah: An Open Source Garbage Collector (JEP 189) with an Ultralow Pause Time

Shenandoah: An Open Source Garbage Collector (JEP 189) with an Ultralow Pause Time

Christine Flood

free
Thumbnail for: Safety Not Guaranteed: sun.misc.Unsafe and the Quest for Safe Alternatives

Safety Not Guaranteed: sun.misc.Unsafe and the Quest for Safe Alternatives

Paul Sandoz

free
Thumbnail for: Runtime Code Generation for the JVM

Runtime Code Generation for the JVM

Rafael Winterhalter

free
Thumbnail for: Journey’s End: Collection and Reduction in the Stream API

Journey’s End: Collection and Reduction in the Stream API

Maurice Naftalin

free
Thumbnail for: Rethinking API Design with Groovy Traits

Rethinking API Design with Groovy Traits

Cédric Champeau

free
Thumbnail for: Lambda Under the Hood

Lambda Under the Hood

Brian Goetz

free
Thumbnail for: Java Performance Is a Social Activity

Java Performance Is a Social Activity

Ben Evans

free
Thumbnail for: Jump-Starting Lambda

Jump-Starting Lambda

Michael Duigou , Stuart Marks

free
Thumbnail for: IntelliJ IDEA: 42 Tips and Tricks

IntelliJ IDEA: 42 Tips and Tricks

Hadi Hariri

free
Thumbnail for: JavaScript/HTML5 Rich Clients Using Java EE 7

JavaScript/HTML5 Rich Clients Using Java EE 7

Reza Rahman

free
Thumbnail for: Java EE 7 Soup to Nuts

Java EE 7 Soup to Nuts

Arun Gupta

free
Thumbnail for: Finding Subtle but Common Concurrency Issues in Java Programs

Finding Subtle but Common Concurrency Issues in Java Programs

Mark Winterrowd

free
Thumbnail for: Event-Sourced Architectures with Akka

Event-Sourced Architectures with Akka

Sander Mak

free
Thumbnail for: HTML5/AngularJS/Groovy/Java and MongoDB Together: What Could Possibly Go Wrong?

HTML5/AngularJS/Groovy/Java and MongoDB Together: What Could Possibly Go Wrong?

Trisha Gee

free
Thumbnail for: Habits of Highly Effective Technical Teams

Habits of Highly Effective Technical Teams

Martijn Verburg

free
Thumbnail for: Fixing Code at 100 Miles per Hour: Seven Techniques to Improve How You Debug Servers

Fixing Code at 100 Miles per Hour: Seven Techniques to Improve How You Debug Servers

Tal Weiss

free
Thumbnail for: Creating Amazing Interactive Visualizations with JavaFX

Creating Amazing Interactive Visualizations with JavaFX

Michael Hoffer

free
Thumbnail for: Continuous Delivery Antipatterns

Continuous Delivery Antipatterns

Andrzej Grzesik

free
Thumbnail for: Continuous Delivery and Zero Downtime: What Your Architecture Needs to Succeed

Continuous Delivery and Zero Downtime: What Your Architecture Needs to Succeed

Axel Fontaine

free
Thumbnail for: Do Your GC Logs Speak to You? The G1GC Edition

Do Your GC Logs Speak to You? The G1GC Edition

Kirk Pepperdine

free
Thumbnail for: Confessions of a Former Agile Methodologist

Confessions of a Former Agile Methodologist

Stephen Chin

free
Thumbnail for: Coding for Desktop and Mobile with HTML5 and Java EE 7

Coding for Desktop and Mobile with HTML5 and Java EE 7

Geertjan Wielenga , John Brock

free
Thumbnail for: Clojure Made Simple

Clojure Made Simple

Rich Hickey

free
Thumbnail for: Being Followed: How Individuals Help Teams Become

Being Followed: How Individuals Help Teams Become

Michael Hill

free
Thumbnail for: Coding Culture

Coding Culture

Sven Peters

free
Thumbnail for: Apache HBase 101: How HBase Can Help You Build Scalable, Distributed Java Applications

Apache HBase 101: How HBase Can Help You Build Scalable, Distributed Java Applications

Aleks Shulman , Justin Kestelyn

free
Thumbnail for: Where’s My UI? The 2014 JavaOne Web App UI Smackdown

Where’s My UI? The 2014 JavaOne Web App UI Smackdown

Edward Burns , Joonas Lehtinen , Misko Hevery , Neal Ford , Pete Hunt

free
Thumbnail for: DistributableStream: A Java 8 Stream Computational Model for Big Data Processing

DistributableStream: A Java 8 Stream Computational Model for Big Data Processing

Garret Swart , Kuassi Mensah , Xueyuan Su

free
Thumbnail for: Reactive Programming for Java Programmers

Reactive Programming for Java Programmers

Venkat Subramaniam

free
Thumbnail for: Lessons Learned from Real-World Deployments of Java EE 7

Lessons Learned from Real-World Deployments of Java EE 7

Arun Gupta

free
Thumbnail for: Toward Low-Latency Java Applications

Toward Low-Latency Java Applications

John Davies , Kirk Pepperdine

free