An Agile Toolchain for Flex RIAs
RIAs are certainly changing the way we build software. User experience is now central to building great software. How does this impact our Agile methodologies? How do we implement Agile when working with designers? What testing and development tools exist to aid us in implementing Agile in RIAs? This session will use live coding and demos to show how Agile is being used to build Flex RIAs.
Developing Web Applications with Spring, Part I
In this session, Keith will provide a quick overview of what Spring provides for web application development.
Then, from the ground up, he will take attendees through the process of designing and implementing a web application with the framework.
Attendees will not only learn the Spring feature set, they will learn to apply the features effectively.
Whether you are new to Spring, or an experienced Java developer who has used Spring before, this session should help you grow as an application developer.
Facts and Fallacies of Software Development
Corporate developers have to constantly contend with fallacies often delivered to them as facts. However, each of us has a professional
responsibility to be objective and make decisions that will help us and our teams be productive and deliver results. In this presentation
we’ll pick on some fallacies, lay down facts, and discuss how to stay professional and objective in our daily efforts.
High Performance Architectures
How do you get a Java based platform to process tens of millions of transactions a day in an average of under 3 milliseconds each? Processing half of the world’s oil transactions as well as US natural gas, sugar, coffee, financial index markets and more, the ICE platform and has entrenched ICE as a leader in the world of Futures and Options. Edwin Marcial will discuss the Intercontinental Exchange (ICE) Trading Platform architecture and how it has become the fastest trading platform in the commodities industry.
GWT Best Practices
Get RAD with Grails
Grails is the ultimate Java rapid application development environment (RAD). Using the lightweight but powerful Groovy language sitting on top of the JVM, you can put together a complete application in a fraction of time as “normal” web-app development. This introductory session to Grails will cover the new Grails 1.2 release using lots of
code examples. We’ll use The new Eclipse-Groovy/Grails plugin to create a complete app during the session. We’ll also use some of the hundreds of plugins available for Grails. These plugins offer
easy-to-use features such as rich internet, security, clustering, etc.
GateIn - The Solution for Managing and Building Enterprise Web Apps
The newly formed JBoss GateIn project promises to deliver a scalable and intuitive portal solution. I will show developers how to get started with GateIn and how to navigate and administer the portal and portlets. I will also demonstrate how to skin the portal to look like a “normal” web application that delivers content management, authentication, social capabilities and many other services.
If time allows, I will also dive into the JBoss Portlet Bridge project which allows you to run a Seam, Richfaces, or normal JSF application as a portlet.
Java is a well established language, that has been around for more than a decade. Yet, programming on it has its challenges. There are concepts and
features that are tricky. When you run into those, the compiler is not there to help you. In this presentation we will look at various concepts that you will use in
general programming with Java. We will discuss the issues with those and how you can improve your code. We will look at concepts you can do better and
those you should outright avoid.
Better Software with Java and Flex
Building highly interactive software that users love to use is usually a challenging endeavor. However, the open source Flex SDK and Java are a perfect combination of technologies for building very rich and highly interactive software for the Web and the desktop. The communication between the Java back-end and Flex front-end can utilize a number of different communication protocols, but the easiest and best performing is the open source BlazeDS library. This session covers the fundamentals of using Flex, Java, Spring, EJB, Hibernate, and BlazeDS to build rich and highly interactive software for the Web and the desktop.
Unlocking Android Development
Mobile applications are becoming more and more important for both users and businesses. Android provides and important platform for building and delivering those applications. Android matters because it is open, free, capable, and fully customizable. Android has been embraced by device manufacturers and mobile service providers – and you can use it to write great applications too. This session will focus on a quick overview of the Android platform, from operating system to middleware, to applications and APIs; and then to development basics covering fundamental concepts and how to get common tasks done.
The 90-Day Startup with Google AppEngine: A Case Study
Google AppEngine is a developer’s dream: one-button deployment, no servers to configure, and ultimate scalabilty. To get these benefits, however, you must learn to design within AppEngine’s constraints: no threads, no relational database, and a JRE whitelist, to name a few.
This presentation offers a peek inside a real-world GWT application deployed on AppEngine. We’ll look at working with the AppEngine database (including version upgrade considerations), how to do
background processing absent thread support, designing for quotas, and discuss one developer’s overall experience launching a startup on AppEngine.
Scala: Running on the JVM with Less Boilerplate
Java is ambitious in a few ways, but mostly it has been developed as one very practical decision after another. Scala rounds off the rough edges of Java by injecting it with many ideas from other languages, and it adds a few new features such as pattern matching that simplify your code further. I will describe the language and show a variety of ways it makes your code shorter and more to the point.
Google Wave for Developers
Google introduced Wave saying that this new online collaboration tool “reinvents email”. But they have offered developers a lot more than that. The Wave architecture incorporates many innovations since email - especially live cooperative editing. So Google challenges us to reinvent our communication apps with these possibilities in mind.
Wave is a big topic so the talk is organized in three parts with time for discussion:
Wave - Product, Platform, and Protocol.
An overview of Wave emphasizing the Wave platform for extension development.
Wave architecture - Patterns for development.
Approaches for using Wave’s live synchronization layer with new and existing web applications.
Development of Wave robots in Java.
The API for building Wave robots that watch user activity and respond with edits. Robot services range from simple text substitution to interfaces to existing web services.
Google App Engine: Cloud vs Cluster
Google App Engine is Google’s cloud offering. In this presentation I’ll introduce you to App Engine through comparison and contrast to typical JEE cluster deployments. You’ll learn about unique, distinguishing features of App Engine; we’ll walk through code examples that demonstrate App Engine capabilities; and I’ll explain important differences you’ll need to understand in order to develop successful App Engine applications.
Java EE 6 & GlassFish v3: Paving the Path for Future
The Java EE 6 platform is an extreme makeover from the previous versions. It is developed as JSR 316 under the Java Community Process.
The Java EE 6 platform adds more power to the platform and yet make it more flexible so that it can be adopted to different flavors of an application. It breaks the “one size fits all” approach with Profiles and improves on the Java EE 5 developer productivity features. It enables extensibility by embracing open source libraries and frameworks such that they are treated as first class citizens of the platform.
Several new specifications such as Java Server Faces 2.0, Servlet 3.0, Java Persistence API 2.0, and Context and Dependency Injection 1.0 are included in the platform. All these specifications are implemented in GlassFish v3 that provides a light-weight, modular, and extensible platform for your Web applications.
This session provides an overview of Java EE 6 and its Reference Implementation - GlassFish v3. Using multiple simple-to-understand samples it explains the value proposition provided by Java EE 6.
Hudson and Sonar - Automated Software Quality Control Tools
This session is aimed at helping developers get started with
automating the collection of software quality metrics. We’ll cover
continuous integration, automated code metrics gathering, and analysis
of these metrics. The ability to be able to detect problems early, and
also to write higher quality code early, helps avoid bugs and headache
down the line. We’ll cover some best practices around using and
putting in tools to help achieve higher quality.
This course centers around two freely available tools for maintaining
high quality codebases. The first is Hudson, a continuous integration
server. The second is Sonar, a code metrics server. In this session,
we’ll discuss best practices and then put them into use by setting up
and running these tools. We’ll also talk about tips for getting the
most out of these tools. If you aren’t using these tools in
development, you absolutely need to come to this session - it will
help make your life easier and impress your boss too!
9.7 Things Every Programmer Should Know About User Experience
The success of Web 2.0 and the popularity of mobile applications has revealed an important fact. Having an engaging or otherwise compelling user experience is critical to an application’s success. Given a choice, people will replace an application they find difficult to use with something that’s easier; even if the replacement doesn’t do everything the original did. Some businesses bring in professional User Experience Designers in an attempt to deal with this issue. The problem is that most designers don’t actually write code, and running code is the key factor in determining what kind of user experience your customers have.
That’s why it is critical that you understand the principles and fundamentals presented in this talk. You’ll leave with a better handle on what user experience is, and what you can do to ensure your application delivers the best possible user experience to your customers.
JSR-299 (CDI), Weld and the future of Seam
JSR-299: Contexts and Dependency Injection for Java EE is an elegant set of new services for Java that draws upon ideas from JBoss Seam and Google Guice. While many of the features provided (dependency injection, contextual lifecycle, configuration, interception, event notification) are familiar, the innovative use of meta-annotations is uniquely expressive and typesafe.
Seam is a powerful open source development platform for building rich Internet applications in Java. Seam is built on a JSR-299: Contexts and Dependency Injection for Java EE core (provided by Weld in JBoss Application Server), which integrates with Java EE technologies like JavaServer Faces (JSF) and Enterprise Java Beans (EJB 3.0). Seam integrates technologies such as Java Persistence (JPA), Business Process Management (BPM), Rules (Drools), Wicket, PDF and Excel reporting, Security and email into a unified full-stack solution, complete with sophisticated tooling.
HtmlUnit: An Efficient Approach to Testing Web Applications
Top-to-bottom integration testing is a critical step in delivering quality web applications. HtmlUnit is an open source headless browser for the JVM which provides an efficient means of automating these integration tests. Unlike most other tools in this area, HtmlUnit simulates a browser rather than driving a “real” browser, and is capable of emulating the behavior of Firefox or IE for a very large number of web applications: from simple old-fashioned pre-AJAX applications all the way to complex Web 2.0 apps.
HtmlUnit’s approach provides obvious benefits in areas such as ease of deployment, performance, scalability, and AJAX testing, but also has some limitations. Project committer Daniel Gredler will provide a detailed overview of the library, explain how to get the most out of the HtmlUnit approach, and show why in many cases it is far more efficient than working with a “real” browser to ensure the quality of your web app.
The intended audience of the session are Java (or other JVM language) developers who need to write top-to-bottom integration tests for their web applications.
Attendees will learn about:
GWT MVP Case Study
The asynchronous nature of GWT development requires a new way of thinking, especially for long-time server-side Web developers. How to notify views of changes to the model? Communicate between views? Cache data from service calls? And how to avoid UI spaghetti code? In this talk, you’ll get a close-up look at a real-world app using the Model View Presenter pattern as implemented by the gwt-presenter and gwt-dispatch frameworks. We’ll cover the event bus, decoupling presenters and views, making secure service calls with the Command pattern, and how GWT+MVP supports caching and an Undo feature. Learn what MVP is all about and whether it’s right for you.
Developing Web Applications with Spring, Part II
This session picks up where part I left off by adding an integration layer to the application.
This integration layer will allow the application to connect to other systems, as well as push messages to clients asynchronously.
Securing the web application will also be addressed, and you’ll learn how to support multiple client types such as Flash (Flex) and .NET.
Attendees will complete the session with a broad understanding of using Spring to solve enterprise integration problems.
Spring Integration, Spring BlazeDS Integration (Flex), Ajax Polling/Comet, Object-To-XML Mapping (OXM), Common Enterprise Integration Patterns, best-of-breed development tools
Smithing in the 21st Century
Blacksmiths in 1900 and PowerBuilder developers in 1996 have something in common: they thought their job was safe forever. Yet circumstances proved them wrong. One of the nagging concerns for developers is how do you predict the Next Big Thing, preferably before you find yourself dinosaurized. This keynote discusses why people are bad at predicting the future, and why picking the Next Big Thing is hard. Then, it foolishly does just that: tries to predict the future. I also provide some guidelines on how to polish your crystal ball, giving you tools to help ferret out upcoming trends. Don’t get caught by the rising tide of the next major coolness: nothing’s sadder than an unemployed farrier watching cars drive by.
Next Generation Development Infrastructure: Maven, M2Eclipse, Nexus & Hudson
All development organizations eventually converge on a set of tools to reduce costs, lower onboarding time, and leverage knowledge in strong communities to create standard processes. To this end we see in many organizations the emergence of a standard development stack consisting of Maven, M2Eclipse, Nexus & Hudson. In this talk, Jason van Zyl will discuss the future of Maven and specifically Maven 3.x, the rapidly approaching M2Eclipse 1.0 release, the recent Nexus 1.5 release and roadmap, and the emergence of tools like Maven Shell and Polyglot Maven. Sonatype itself leverages this stack on a daily basis and this discussion will focus not only on the tools individually, but how they can work together to create a best practices approach to building and delivering your software in your organization.
Domain-Driven Design: An Introduction
The first book on Domain-Driven Design was published in 2003, authored by Eric Evans, who first coined the term and distilled the time-tested principles and patterns that make up the practice of DDD. In recent years, simplification and increased testability through frameworks like Spring, Hibernate, and others has substantially reduced the complexity of application infrastructure, allowing teams to turn their focus to honing their approach to software design. Domain-Driven Design meets practitioners in that quest with principles, practices, and process to recapture the spirit of software excellence that has been lost in so many of today’s technology practices.
This talk will introduce the foundations of Domain-Driven Design, and present several facets of DDD in action:
From whiteboard to product launch
There are numerous resources available that cover the topic of software development process and project management. There are numerous resources available that cover tools, frameworks, libraries, containers, application servers, languages, databases and so on. There are numerous resources available that cover software architecture. There are numerous resources that cover software quality assurance and testing. There are numerous resources that cover team structure, organization and work environment.
The truth is, all of these topics have an impact on whether we are ultimately successful in getting the job done. This talk aims to touch all of these topics by providing an honest retrospective into how we developed and bought a brand new product to market.
We will cover the trade-offs, the challenges, the mistakes, the process, the tools, the frameworks, the regrets, the work environment and the team organization. You will learn that there are many choices to be made during the course of a software development project. You will learn about the choices we made – and you will learn that just because the choices worked for us doesn’t necessarily mean they will work for you. The goal is for you to find this useful material – whether you are building a corporate IT system, or if you are building a new software product or service regardless of whether you are developer, a product manager, an architect, a test engineer or a project manager.
Boost application performance and monitoring with Terracotta Ehcache
In this presentation we learn how to use Terracotta Ehcache to dramatically boost application performance. Terracotta Ehcache provides a high performance Hibernate second level cache that boosts application performance as much as 10x.
Understanding performance behavior specific to your application can be a challenging task. Every application workload is unique. To provide reliable metrics for comparison, Terracotta Ehcache has benchmarked the Spring PetClinic reference application against competitive solutions such as Memcached, Commercial IMDG, My SQL and a leading In Memory Data Grid including the impressive performance increases from the latest Terracotta 3.2 Server Array.
Terracotta Ehcache EX and FX bring unparalleled scale and performance that hundreds of thousands of deployments depend on today. Some of the world’s largest companies rely on the enterprise scale of Terracotta. Whether your application simply needs easier monitoring and management capabilities or demands high performance and high availability, Terracotta Ehcache is the best solution on the market.
User Stories: Agile and Lean Requirements
A large number of Agile adoption initiatives start at a grassroots level among software developers who have grown uncomfortable with the blatant inefficiencies of classic approaches to software development. The teams who succeed often find themselves working more efficiently, but the impact of their success is hindered. They are still relegated to taking large functional specifications and digesting them into iterations of work, with little if any feedback from the business side of the house. A series of successful sprints can still be met with the cliche “that’s not what we wanted” response, leaving development teams relegated to the “well that’s what you wrote” response. Until the business people are participating in iterative feedback and realizing the flexibility and freedom they have in working with these Agile teams, there will always be a ceiling on their success.
Attendees of this talk will be guided through pragmatic, proven approaches for building that bridge to the business representatives. A thorough treatment of how user stories can be used as an effective tool that allows business and development sides of the house to meet in the middle, as well as when and how to bend in order to move the adoption process forward. It will also cover the sometimes subtle pitfalls and hotspots of promoting a fully Agile process with participating business team members, and ways to hopefully allow good deeds to continue to go unpunished.