2. Java 7 Director’s Cut
Tomas Nilsson (Product Manager Java SE, Oracle)
Oracle heeft veel regels
Over security bugs wordt niet gesproken, niet changelogs
In tegenstelling tot Sun: veel bereikt, actually shipping
Oracle heeft 100.000+ manjaar geïnvesteerd in Java
3. Java EE 7: for the cloud
Arun Gupta (Java EE & GlassFish Evangelist, Oracle)
IaaS, PaaS, SaaS? Vendor lock-in!
Java EE 6 provides services, Java EE 7 is a service
Service provisioning op basis van annotaties
Dynamic service provisioning, auto-scaling, high availability
Demo: http://glassfish.org/javaone2011
4. Don’t call us, we’ll push
Lucas Jellema (Technical Architect, AMIS)
Comet (AJAX push, reverse AJAX, streaming, etc.)
Push: realtime en lagere systeembelasting
Oplossing: Websockets (HTML5, nieuwe spec)
Niet alleen naar browser, ook sommige DB’s kunnen pushen
Gebruik een framework, dat zal t.z.t. wel overstappen
5. Java op Windows Azure
Virtuele Windows Server 2008 instanties
Failover, high availability, maar geen sticky sessions
Zelf Java runtime en servlet container meeleveren
Eigenlijk dus geen specifieke ondersteuning voor Java
Remote desktop toegang voor de liefhebber
6. iOS, HTML5 en Andriod CI
Robert van Loghem (Mobile Development Consultant, Xebia)
Gebruik Unit en UI tests
Realistisch testomgevingen zijn lastig, veldtesten belangrijk
Jenkins met Android Emulator plugin, Jasmine, Selenium
Web Driver, Robotium, GHUnit (test op device), KIF, WaxSim
iOS: onsamenhangende tooling, Testflight is wel te gek
7. Looking at Groovy 1.8
Hubert Klein Ikkink a.k.a. mrhaki (VX Company)
GPars, closures, JSON, command chain expressions, AST
transformations
9. Closures
Closures als annotation parameters
Closure composition (closures samenstellen tot nieuwe)
Closure trampoline (voorkom stack overflow)
Closure memoization (caching van resultaten)
10. JSON: JsonSlurper
import groovy.json.*
def payload = new URL(“http://example.com/commits”).text
def slurper = new JsonSlurper()
def doc = slurper.parseText(payload)
doc.commits.message.each { println it }
11. JSON: JsonBuilder
import groovy.json.*
def json = new JsonBuilder()
json.person {
name “Guillaume”
age 33
pets “Hector”, “Felix”
}
println json.toString()
// {“person”:{“name”:”Guillaume”,”age”:33,”pets”:
[“Hector”,”Felix”]}}
12. Command chains
show = { println it }
square_root = { Math.sqrt(it) }
def please(action) {
[the: { what ->
[of: { n -> action(what(n)) }]
}]
}
please show the square_root of 100
// equivalent: please(show).the(square_root).of(100)
13. AST Transformations
Injecteer logger: @Log, @Commons, @Log4j, @Slf4j
Maak variabele in script beschikbaar in methodes: @Field
@ToString, @EqualsAndHashCode, @TupleConstructor
Of alledrie tegelijk: @Canonical
En nog véél meer: @AutoClone, @InheritConstructors,
@WithReadLock, @WithWriteLock, @ListenerList, etc.
14. String to Enum coercion
String to Enum coercion:
enum Color { red, green, blue }
def r = “red” as Color
Color b = “blue”
15. Misc
Diamond operator (Java 7):
List<List<String>> list1 = new ArrayList<>()
assert [2,4,2,1,3,5,2,4,3].count({ it % 2 == 0}) == 5
assert [1,2,2,2,3].toSet() == [1,2,3] as Set
Slashy strings, dollar slashy strings (multi-line regex)
Er is meer, maar dit is wel even genoeg...
16. Java Tuning Puzzlers
Gebruik AppDynamics Lite!
Findbugs heeft altijd gelijk!
Checkstyle, PMD, etc. is vaak een beetje gezeur
HotSpot profiler, voor simpele applicaties: -Xprof
VisualVM
Gratis Java-monitoring: http://java-monitor.com/