15 Feb 2012
Sven Peters, Atlassian
Greg Luck, Terracotta
Neal Ford, ThoughtWorks, Inc
Johannes Häyry, Vaadin Ltd
Arun Gupta, Oracle
Angelika Langer, Angelika Langer Training/Consulting
Matt Raible, Raible Designs
Glenn Bech, Inmeta Consulting AS
Brian Prince, Microsoft
Fabiane Bizinella Nardon, RBS
Cliff Click, Azul Systems
Viktor Klang, Typesafe
Lars Vogel, vogella.de
James Ward, Heroku
Lunch and exhibition
Kevlin Henney, Curbralan
Arun Gupta, Oracle
Hadi Nahari, NVIDIA
Daniel Fröding, Diabol AB
James Strachan, FuseSource
Staffan Nöteberg, Rekursiv AB
Marcus Hirt, Oracle
Heiko Seeberger, Typesafe
Lars Westergren, Mejsla
Andrew Phillips, jclouds
Leonard Axelsson, Mojang
Anders Hammar, Devoteam
Thomas Alexandre, DevCode Consulting
Josh Long, SpringSource, a division of VMware
Kevlin Henney, Curbralan
Thanks for this year, we meet again 2013
What to Expect from HotRockitMarcus Hirt, Oracle
Oracle is converging the HotSpot and Oracle JRockit JVMs to produce a "best-of-breed JVM." Internally, the project is sometimes referred to as the HotRockit project. This presentation discusses what to expect from the converged JVM over the next two years and how this will benefit the Java community.
Developing portable PaaS applicationsAndrew Phillips, jclouds
In demonstrating how the Java cloud library jclouds makes it easy to work with cloud services in a simple, portable way, we've written a bunch of applications that run on many of today's Platform as a Service offerings, including Google App Engine, CouldBees RUN@cloud, Amazon Elastic Beanstalk, OpenShift, Cloud Foundry and Heroku. In this session, we'd like to share our experience in developing and, just as importantly, managing portable Java PaaS applications. We'll set the context by identifying some pointers to help you decide whether a public or private PaaS makes sense for your application, or whether an IaaS solution in a public or private cloud might be more appropriate. We'll then compare PaaS APIs, provided resources and replacements, and discuss ways of separating your core portable business logic from your "PaaS binding". Finally, we'll look at "live-from-IDE" development, continuous integration and deployment options and touch on monitoring and application management in a multi-PaaS setup.
It Is Possible to Do Object-Oriented Programming in JavaKevlin Henney, Curbralan
OO means different things to different people, but they normally focus on defining terms such as encapsulation, polymorphism and inheritance, and talk about data abstraction, abstract data types and so on. In this talk we take a brief look at what one particular theory of OO suggests and what it means for regular Java programmers and their practice.
Java EE 7: Developing for the CloudArun Gupta, Oracle
This talk introduces the Java EE 7 platform, the latest revision of the Java platform for the enterprise. The focus of Java EE 7 is on the cloud, and specifically it aims to bring Platform-as-a-Service providers and application developers together so that portable applications can be deployed on any cloud infrastructure and reap all its benefits in terms of scalability, elasticity, multitenancy, etc. Furthermore, Java EE 7 continues the ease of development push that characterized prior releases by bringing further simplification to enterprise development. It also adds new, important APIs such as the REST client API in JAX-RS 2.0, vast improvements to Java Message Service 2.0, and plenty of improvements to all other components.
Zero Downtime Continuous Deployment of Java Web ApplicationsFabiane Bizinella Nardon, RBS
Continuous Deployment allows to deploy code in production as soon as it has passed the quality assurance tests. This technique can dramatically reduce the release cycles, giving the company the speed expected in today's world, specially for internet based services. With the right tooling and techniques, a company can create an error free and secure process to automatically deploy its applications in production. Continuous deployment, however, is only viable if you can guarantee zero downtime for your application during the deployment process. With dynamic languages like PHP and Ruby, this is straightforward. Just copy the new files to the deployment folder and voilà! With Java web applications, however, things are not so simple. Although many application servers offer autodeploy features, you'll still have a few seconds of downtime while the server is deploying the application. This presentation will show how to create a continuous deployment process with zero downtime for Java web applications. Using tools like Hudson/Jenkins, REST services and open source application servers, you'll learn through real world examples how to create a secure and error free continuous deployment process for your application. We will also show how to deploy to cloud based servers, like Amazon AWS, what are pitfalls and limitations for these cloud offers and how you can overcome them.
Lambdas in Java 8Angelika Langer, Angelika Langer Training/Consulting
Java 8 will introdude elements of functional programming in to the Java programming language - the so-called "lambda expressions" (formerly known as "closures"). The language extension will include SAM (Single Abstract Method) type conversion, lambda expressions, exception transparency, extension methods, method references und local variable capture. The tutorial will explain the new language features along with their purpose.
Developing Mobile Web Apps with PhoneGapPamela Fox
If you decide today that you want to create a mobile application, you have to decide on a development strategy - especially if you want to target multiple platforms. You can either learn to program from scratch for each platform or you can use a framework that abstracts on top of all of the platforms - like Apache PhoneGap. If you decide to use PhoneGap, you still have decide whether to use a library specially designed for mobile applications - like Sencha or jQuery mobile - or whether to use general libraries like Zepto or jQuery. There are a lot of decisions to make, and there's no one best strategy at this point in the game. In this talk, I'll explain my development strategy, why I chose it, and what I've learnt along the way - so that your own decision process is easier.
PaaSing a Java EE ApplicationArun Gupta, Oracle
A PaaS offering typically facilitates application deployment without the cost and complexity of managing infrastructure, by providing all of the facilities required to build and deliver services. Current Java EE deployment requires the deployer to provision the various dependent services of an application in that container. To support PaaS deployment scenarios, GlassFish is working to provide a simplified application provisioning and deployment interface to users, with the runtime handling the discovery of service dependencies, provisioning services, and associating service references with these services. Some of the metrics (such as CPU, memory, and response times) can be used to monitor system health. These metrics can then be used to determine if the cluster of virtual machines hosting the Java EE container needs to be dynamically expanded or shrunk to accommodate fluctuations in demand. This session details how Java EE containers such as GlassFish can provide such service orchestration and elasticity capabilities.
This session will take an existing Java EE 6 application and walk through the complete life cycle of taking this application from desktop to a PaaS environment. The session will explain the development, testing, and debugging of such an application in the PaaS envinronment.
"git push" Java & Play! Apps to the CloudJames Ward, Heroku
Heroku is a Polyglot Cloud Application Platform that makes it easy to deploy Java & Play! apps on the cloud. Deployment is as simple as doing a "git push". This session will teach you how to deploy and scale Java & Play! apps on Heroku.
One-liners are your friend: Increasing Productivity with ScalaThomas Alexandre, DevCode Consulting
We believe the success of communication through SMSs, Tweets and Facebook Status messages lies in its conciseness (i.e. 140 characters). Similarly, short and expressive code not only reduces maintenance needs but also increases readibility and ultimately affect the productivity of a programmer. This session is about pragmatic examples of such "one-liners" commonly found in enterprise applications development. In particular, we will exhibit the invocation and transformation of REST services with frameworks like Unfiltered and Akka Futures and show how the REPL(Read Eval Print Loop) command tool can save you a lot of time by programming interactively with one-liners.
Developing Enterprise-Scale Java Applications on Windows AzureBrian Prince, Microsoft
The Windows Azure Platform is an open and interoperable platform which supports development using many programming languages and tools In this session you will see how to build large-scale applications for the cloud using Java, Eclipse Tools, Apache Tomcat, and the Windows Azure SDK for Java. You will also learn how to leverage the latest Windows Azure Platform as a Service features.
So whats so cool about Android 4.xLars Vogel, vogella.de
Android 4.0 finally merges the source tree for Handsets and Tablets. In this session we will look at the ActionBar, Fragment support and Drag and Drop and look why these concepts are useful for Android developers.
If time permits we also have a look a the new APIs as for example Calendar and the social API and ViewPager.
Tackling Android fragmentationGlenn Bech, Inmeta Consulting AS
The number of Android powered devices are sky rocketing. To reach larger audiences, developers want to create applications that are compatible with as many devices as possible. This results in having to cope with different android versions, screen sizes, aspect ratios and pixels densities. The possibilities have become even greater with the introduction of Android 4, Ice cream sandwich. Since Google's latest version of Android is backwards compatible with Honeycomb, developers can potentially adapt their tablet applications to work on the latest phones and reach a larger, and growing user base. An important goal for Android 3 was to make it easier for developers to write applications that can scale across a variety of screen sizes, beyond the facilities already available in the 2.x platform.
The presentation will cover how to use fragments to achieve a high level of code reuse in the UI layer. The presentation will also cover how to use the Android compatibility package to build applications that can be installed, from a single APK, to a wide range of devices including both phones and tablets. A migration path from applications written for phones to tablets, using this package, will also be outlined.
Regex Applied - When Regex is a WinnerStaffan Nöteberg, Rekursiv AB
Everyone knows that Regex (Regular Expressions) can make fascinating tricks. Some people know and other people suspect that regex can do valuable things ? sometimes. Some problems are more suited for regex solutions than others. What are the common traits of those problems? How should we think in order to solve them? What alternative solutions are there? Staffan categorizes and exemplifies when you should and should not use regex. He'll also show how to do refactorings using regex, from the Search/Replace dialog in text editors like Eclipse and Emacs.
Building iOS applications in JavaJohannes Häyry, Vaadin Ltd
Retrospective from the year of DevOpsDaniel Fröding, Diabol AB
The way we are developing systems is undergoing a radical change. Starting with the agile movement a few years ago, we are now in a position where organizational walls are falling like domino bricks and people think in new ways to such extent that a paradigm shift is the only suitable description. How can it be possible to have more fun, experiment more, do less boring tasks, while at the same time make business people feel free, happy and innovative - in short - create a more successful company. This talk addresses some of what this is all about and hopefully sends the audience a bit on the way to a full paradigm shift.
The Art of (Java) BenchmarkingCliff Click, Azul Systems
People write toy Java benchmarks all the time. Nearly always they "get it wrong" -- wrong in the sense that the code they write doesn't measure what they think it does. Oh, it measures something all right -- just not what they want. This session presents some common benchmarking pitfalls, demonstrating pieces of real, bad (and usually really bad) benchmarks such as the following: SpecJVM98 209_db isn't a DB test; it's a bad string-sort test and indirectly a measure of the size of your TLBs and caches. SpecJAppServer2004 is a test of your DB and network speed, not your JVM. SpecJBB2000 isn't a middleware test; it's a perfect young-gen-only garbage collection test. The session goes through some of the steps any programmer would go through to make a canned program run fast -- that is, it shows you how benchmarks get "spammed." The session is for any programmer who has tried to benchmark anything. It provides specific advice on how to benchmark, stumbling blocks to look out for, and real-world examples of how well-known benchmarks fail to actually measure what they intended to measure.
7 Things: How to make good teams greatSven Peters, Atlassian
Developing a product over years is a tough job. It is hard for the team to stay excited on a day to day basis. So how can you improve motivation and innovation of agile teams and still keep the focus on building a great product? I want to share with you how we at Atlassian used an agile approach to become one of the most successful developer tool companies in the world. This talk will cover topics like FedEx days, 20-percent time, keeping distraction away from developers, lunchtime talks, dogfooding and much more.
SQL, NoSQL, NewSQL? What's a developer to do?Chris Richardson
The database world is undergoing a major upheaval. NoSQL databases such as MongoDB and Cassandra are emerging as a compelling choice for many applications. They can simplify the persistence of complex data models and offering significantly better scalability and performance. But these databases have a very different and unfamiliar data model and APIs as well as a limited transaction model. Moreover, the relational world is fighting back with so-called NewSQL databases such as VoltDB, which by using a radically different architecture offers high scalability and performance as well as the familiar relational model and ACID transactions. Sounds great but unlike the traditional relational database you can't use JDBC and must partition your data.
In this presentation you will learn about popular NoSQL databases - MongoDB, and Cassandra - as well at VoltDB. We will compare and contrast each database's data model and Java API using NoSQL and NewSQL versions of a use case from the book POJOs in Action. We will learn about the benefits and drawbacks of using NoSQL and NewSQL databases.
Android: A Security AnalysisHadi Nahari, NVIDIA
This session provides a security analysis of Android stack (a.k.a Android OS) from software, application development, programming constructs, all the way down to hardware-specific features of Android devices (mobile phones, tablets, and other consumer electronics devices.) Specific attention will be paid to Android applications and use cases where security is not a "nice to have"; rather, it's a "must-have" (such as payment, identity binding, and generic authentication.)
An introduction to NFC, smartphones and youLars Westergren, Mejsla
The number of new mobile devices launched with NFC capabilities are set to explode in 2012. But what does it mean to you as a consumer, a citizen or a developer? The presentation will have an introduction to Near Field Communication technologies and some typical use cases. It will show how to get started developing NFC applications with Android. It will also show how to deploy a Java Card cardlet to a smartphone Secure Element using the Global Platform standard and a USB card reader or an online Trusted Service Manager.
Tesla - the Maven successorAnders Hammar, Devoteam
Tesla is a new build framework by the original founder of Apache Maven, Jason van Zyl. In simple terms it can be described as a superset of the Maven tool and is designed to kickstart the development of software projects. It's fully compliant with Maven builds but has many new features which will help you in areas where Maven comes up short. This talk will cover the basics of Tesla, describe the new features compared to Maven, and also show how Tesla will work in your existing Maven-based development infrastructure.
We visualized, we saw, we changedLeonard Axelsson, Mojang
Realtime monitoring provides everyone on a team, as well as interested stakeholders, with a shared and deepened understanding of how a system performs. Visualize it and you get direct feedback form the heart of your system. In this session we want to share our experiences with introducing monitoring and how the feedback it provided influenced both system design and team collaboration. We will use Graphite, a monitoring tool that makes data gathering no harder than printing "Hello world" and realtime visualization even easier. We will show how a monitoring tool like this; simple, instantly available and used continuously; was instrumental in implementing change in behaviour and collaboration.
JSR107: The new Java Caching StandardGreg Luck, Terracotta
In this session Greg Luck, founder of Ehcache and spec lead for JSR107 will walk you through this important new caching standard, which will form part of Java EE 7. You will learn how to: ? Abstract your caching implementation, much as with JDBC ? Use the rich and modern API ? Use the new caching annotations ? Use the API before Java EE 7 is released within the Java SE, Java EE 6, and Spring environments ? Plug in Ehcache as the caching provider and configure it for standalone and distributed contexts
Cool CodeKevlin Henney, Curbralan
In most disciplines built on skill and knowledge, from art to architecture, from creative writing to structural engineering, there is a strong emphasis on studying existing work. Exemplary pieces from past and present are examined and discussed in order to provoke thinking and learn techniques for the present and the future. Although programming is a discipline with a very large canon of existing work to draw from, the only code most programmers read is the code they maintain. They rarely look outside the code directly affecting their work. This talk examines some examples of code that are interesting because of historical significance, profound concepts, impressive technique, exemplary style or just sheer geekiness.
Lightning intro to CloudFoundryJosh Long, SpringSource, a division of VMware
Let's face it, the cloud's here to stay. CloudFoundry represents a promising open cloud platform for Java and Spring applications today, and tomorrow. In this lightning talk, Josh Long will introduce CloudFoundry, it's architecture, and how it can be used with existing Spring applications and new ones, leveraging Spring 3.
Functional ThinkingNeal Ford, ThoughtWorks, Inc
Learning the syntax of a new language is easy, but learning to think under a different paradigm is hard. This session helps you transition from a Java writing imperative programmer to a functional programmer, using Java, Clojure and Scala for examples. This session takes common topics from imperative languages and looks at alternative ways of solving those problems in functional languages. As a Java developer, you know how to achieve code-reuse via mechanisms like inheritance and polymorphism. Code reuse is possible in functional languages as well, using high-order functions, composition, and multi-methods. I take a variety of common practices in OOP languages and show the corresponding mechanisms in functional languages. Expect your mind to be bent, but you?ll leave with a much better understanding of both the syntax and semantics of functional languages.
HTML5 with Play Scala, CoffeeScript and JadeMatt Raible, Raible Designs
This session shows you how to use some of the hottest technologies today to build a webapp, an API and a mobile application to track fitness workouts. Using HTML5 technologies (specifically geo and local storage), I'll show you how you can track the time, distance and music you listened to while exercising. Play with Scala is used for the backend and services, while CoffeeScript and Jade are used for the front-end templating and Ajax communication. This session will explain limitations encountered with HTML5 and discuss when native apps might work better.
Up and out: Scaling software with ActorsViktor Klang, Typesafe
We believe that one should never have to choose between productivity and scalability, which has been the case with traditional approaches to concurrency and distribution. The cause of that has been the wrong tools and the wrong layer of abstraction and Akka is here to change that. Akka is using the Actors together with Software Transactional Memory (STM) to create a unified runtime and programming model for scaling both UP (utilizing multi-core processors) and OUT (utilizing the grid/cloud). With Akka 2.0 this will be taken to a whole new level, and in this presentation we will talk about "Distributed by Design", how it scales from small projects to huge projects, and how we've projected what we've learned during the 1.x series into the 2.x series.
Introducing Scalate, the Scala Template EngineJames Strachan, FuseSource
In this talk, James will walk you through the different template languages available in Scalate, the Scala Template Engine -- , discussing the pros and cons of each to help you pick the right template language. During the talk you will learn how to add Scalate to your web app, use scalate with servlets or JAXRS, and use the Scalate web console and command line tools.
Scala in ActionHeiko Seeberger, Typesafe
You don't yet speak Scala? Then let us invite you to a journey on which we will explore the outstanding features of this programming language for the Java Virtual Machine. As an intoduction we will breifly talk about Scala's key characteristics. Then we will explore this language and some of its typical applications by means of vivid examples and live coding. As a finalizer we will outline Scala's future directions.