PJUG Meeting Information
135 SW Taylor Street
Please take elevator to 3rd floor
135 SW Taylor Street
Please take elevator to 3rd floor
Runtime annotation can be slow. Learn how annotations can be used during compilation rather than runtime or just as documentation. We'll have a look at the annotation processing API (JSR 269) and look at some practical examples.
Microbenchmarking is fraught with peril. Method inlining. Dead code elimination. Constant folding. False sharing. Loop unrolling. Bimorphic and megamorhpic call sites. This talk explores these fantastic mysteries using JMH, the excellent microbenchmark harness from Oracle developed under the OpenJDK project.
How do you handle 8-10 million monthly unique visitors with Grails? Build pages using concurrency, SOLR, SQUID, and RESTful services on Grails, that's how!
In this session we will cover cutting edge use of Grails in a SOA environment to serve sub-second page delivery, best practices and lessons learned so far at Virtualtourist.com
This talk was given in 2012 at UberConf and at SpringOne2GX and has been updated to also discuss the extension of this platform to support PicPackApp.com a combination of native mobile applications and a responsive Angular.JS web interface.
The API for Bodybuilding.com serves more than a hundred million API calls everyday across hundreds of servers. Learn how we use Hystrix to build a distributed system that is both fault and latency tolerant. We will discuss the bulkhead and circuit breaker patterns used by Hystrix to provide a resilient and fast API.
The objective of this talk is to gain familiarization with Appium - a selenium-based tool for testing mobile applications. Through a series live demos we'll discuss automation techniques for functional and performance testing of Android and iOS apps using Appium's Java API. We will also see a couple of other tools that can be useful for developing and testing mobile apps, including Xamarin Studio and Riverbed SteelCentral.
Defn:"Cobble" - "Put together something from available parts or elements"
We will take a real world problem and architect (aka cobble) an open source KISS solution (using parts from multiple previous PJUG talks!).
The goal is to have cloud based charts and graphs available to the marketing guys when the data sources are not. We will roll up multiple local MySQL databases into a cloud based Mongo database using JSON services and Morphia java objects. We will then create new JAX-RS services to supply DataTables to a GWT implementation of Google Charts.
Voila! Marketing department is now happy
(Well, no they are never happy - just placated)
After 4 years of incubating in my basement, Glowroot is ready to go out into the wild and take on difficult performance issues and sporadic errors with its GUI configurable trace and metric definitions and its core plugin support for servlets and JDBC.
This talk covers using JAX-RS and Jersey to create REST services for embedded system. It covers the basic of JAX-RS and then moves into using Jackson for JSON encoding and using the streaming API to reduce memory footprint for using REST API in embedded systems.
Ever wonder how Amazon and Netflix seem to have an uncanny ability to anticipate what products you might be interested in based on your past selections? This presentation will focus on an actual Recommender System application and will focus on:
Recommender Systems Overview - a quick recap of my January talk on Intro to Recommenders.
Gilt is an online retailer based out of New York City. Gilt's main site, gilt.com, offers luxury apparel and home furnishings. This talk will discuss how Gilt.com supports taxes and payments. We'll discuss Gilt's checkout system and order processing backend.
Clojure is a fascinating new(er) programming language, created by Rich Hickey, that combines the ubiquity and performance of Java with the power and expressiveness of Lisp. Clojure excels at interesting problems, especially those involving concurrency, but can also freely interoperate with standard Java. Clojure developers quickly become passionate about this odd little hybrid: it's easy to learn, yet deeply powerful, and is at the heart of a vibrant and exciting eco-system of tools and libraries.
WildFly 8 (née JBoss Application Server) is Red Hat's open source Java EE 7 compliant application server. It contains robust implementations of WebSocket, Batch, JSON, Concurrency, JMS2, JAX-RS 2, CDI 1.1, and all Java EE 7 technologies. Undertow is the new cutting-edge web server in WildFly 8 and is designed for maximum throughput and scalability, including environments with over a million connections. The number of ports is reduced used by multiplexing protocols over HTTP using HTTP Upgrade.
Role Based Access Control support organizations with separated management responsibilities and restrictions. Roles represent different sets of permissions such as runtime operation execution, configuration areas that can read or written, and the ability to audit changes and manage users. In addition a new restricted audit log can be enabled including the ability to offload to a secure syslog server.
WildFly also provides a "core" distribution that is ideal for framework authors that want to build their own application runtime using the powerful WildFly 8 architecture.
NetBeans, IntelliJ, and Eclipse allow WildFly to be used for development, deployment, and debugging.
Ever wonder how Amazon and Netflix seem to have an uncanny ability to anticipate what products you might be interested in based on your past selections? This presentation will delve into how this accomplished thought the use use of filters - both collaborative and content-based - and also hybrid techniques.
Two practical open source recommender systems will also be presented:
Lenskit framework - An open-source toolkit used primarily for researching and building recommender prototypes.
Apache Mahout - A production-grade Machine Learning system. One of Mahout's strong use cases is in building recommenders.
Throughout its 18-year evolution, the Java language has played an industry-leading role in the tricky business of specifying the behavior of concurrent programs. Java's contribution became particularly evident with the introduction of the Java Memory Model (JMM) in Java 1.5.
This is an area in which a down-to-the-metal understanding can help developers strike the right balance between safety and performance, so we'll start by motivating the discussion with counterintuitive low-level examples. Then we'll work "up from the weeds" to describe the JMM as a basis for more familiar programming patterns. We'll touch on how C, C++, and C# deal with the same issues and give a nod to functional languages and Java 8.
This material can help most developers become more insightful about concurrency issues in their code. Be there or be unsynchronized!
This year at JavaOne, JDK 8 was one of the hottest topics. All of the good stuff has been summarized into this presentation. Come and see what's coming next March! (Hint - think "lambdas"). Also included are other subjects were of interest. Want to see how to run Java on your iOS device? There are already apps in the Apple App Store written in Java - come see how!
Will give a high level overview of what Elasticsearch is, a bit about why it was created, how it works under the covers and how to use it with your Java/Groovy applications. I will then show a demo of indexing data into Elasticsearch and then visualizing and searching on it using Kibana.
We all know that the most challenging programming problems we're likely to face involve threading. Lots and lots of threads, coordinating and communicating in complex and non-deterministic ways. Clojure by itself gets us part of the way there with immutable data-structures and threading primitives (such as atoms and agents), but coordinating many threads in the ways demanded by real applications increases complexity and reduces performance.
core.async is a new library for Clojure that rationalizes and simplifies coordination of large numbers of threads using communicating sequential processes; the end result is manageable code that looks and feels synchronous ... easy to read, easy to maintain. As is often the case in Clojure, a few simple primitives work together to open up a rich world of possibilities.
Come and learn how Jama is using Selenium WebDriver to test their massive single-page web application. We'll look at strategies and common pitfalls, as well as how it is been integrated into our processes.
Providing scalability by maximizing throughput of mixed resource tasks in a multi-core environment.
Ravi Luthra - A transplant from the Bay Area, CA, who is passionate about software development and specifically Java and everything on the JVM. Pastimes are playing pool and camping when time permits.
One of the more interesting additions in HTML5 are WebSockets. With bandwidth capable of streaming video and audio, it presents a completely new world for building real time push web pages like multi-user forms and HTML control panels.
We will review the browser client side of WebSockets and then the server side communication with a backend Java Servlet via JSON, creating a multi-user browser web page.
Java gets used everywhere and for everything, a reality that can be explained by its efficiency, its portability, the productivity it offers developers, and the platform it provides for application frameworks and non-Java languages. But all is not perfect; developers struggle against Java's greatest strength: its memory management.
We'll talk about where Java needs help, the challenges it presents developers who need to provide reliable performance, the reasons those challenges exist, and how developers work around them. And we'll take a little time to talk about Azul Systems, its history of tackling Java scale issues and how it addresses the mismatch between Java and big data.
What's new with Grails 2? An in-depth look at core Grails features and some tips and tricks to working with or migrating to Grails 2. We will start the discussion with a through over view of Grails and why a developer might want to use it to aid in developing enterprise quality software faster. After our introduction we'll dive into some of the more advanced features of using Grails including making a RESTful application and look at testing the application using GMock.
"The major problems of our work are not so much technological as sociological in nature". - Peopleware
Building good software products is a tricky business and though we often focus technical risks, it's the social issues that frequently derail projects.
Peopleware discusses a broad swath of the challenges that arise in our industry: office environments, staffing, overtime, team chemistry, software processes, etc. And it does so with a sense of humor and anecdotes while still treating the subject seriously with references to case studies and research that underlie much of the material.
Peopleware easily stands out as my favorite software book, a great read for anyone in the industry and a must read for anyone in management.
Apache Drill is new Apache incubator project. It's goal is to provide a distributed system for interactive analysis of large-scale datasets. Inspired by Google's Dremel technology, it aims to process trillions of records in seconds. We will cover the goals of Apache Drill, its use cases and how it relates to Hadoop, MongoDB and other large-scale distributed systems. We'll also talk about details of the architecture, points of extensibility, data flow and our first query languages (DrQL and SQL).
Java bytecode just works. It works so well that the JVM has over 250 languages that compile to bytecode. It works so well that we can usually ignore it.
But given Java bytecode's success and ubiquity, shouldn't we crack the hood and see how it works? Once you do, you may discover that bytecode manipulation is not only fun, it can be used to solve interesting problems.
In this session, we will take a look at how bytecode is represented and how to use the ASM library to view and manipulate it. We'll use the Java Instrumentation API to modify classes as they're loaded and change their behavior.
With multicore processors in cell phones and changes in scale in Enterprise computing, functional programming has risen from the grave to shuffle and moan in even the hallowed halls of Java.
Should we stockpile food and bullets and barracade ourselves in a mall, or should we let this zombie from academia munch our brains? (alt. title - ed.)
This evening we'll discuss some principles and advantages of functional programming, and how the Java programmer can take advantage of FP techniques... even in a largely imperative code base. We'll end the discussion briefly talking about functional programming extensions to Java and JVM-based functional languages, e.g. Clojure and Scala.
Apache CloudStack is an open source private cloud server. In other words, IaaS (Infrastructure as a Service). In this talk we will take a look at CloudStack system architecture and how to configure and deploy your own private cloud with CloudStack. We will also look at some CloudStack Java code and see how it uses Java APIs to control the XenServer hypervisor.
JavaFX 2 is the future of RIA development. It takes the power of a modern scene graph, adds rich animation and multimedia capabilities, and extends to the web and beyond with seamless portability. At the same time, it leverages the power and breadth of the Java language and platform, allowing full access to existing Java libraries and integration with Java client technologies like Swing.
This session will introduce you to the JavaFX 2 platform from the perspective of a seasoned Java developer. The breadth of JavaFX APIs will be explained through several examples that we will build out during the course of the session. In addition, we will showcase SceneBuilder, the new JavaFX-based GUI building tool for rapid application development.If you have heard about JavaFX before, but were not sure about taking the plunge, now is the time to see what you have been missing out on.
This talk will provide a theory of operations, systems description and possibly a demo of a live system. All code will be made available on Github.
This talk will show how latencies of less than 5 seconds can be achieved for a sample metrics application while still retaining years of data with high availability and durability. This is done using a hybrid system consisting of Storm plus Hadoop that cooperate to do something neither can do alone.
This talk will provide a theory of operations, systems description and possibly a demo of a live system. All code will be made available on Github.
Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services. The library was developed at Yammer and has been adopted by Simple (formerly BankSimple) and the Gilt Groupe. We will discuss how Gilt is using Dropwizard and why we adopted the library.
Software estimation is always difficult to do well. Estimation is rarely taught in school and gets little attention in professional training. This presentation, built heavily on material from Steve McConnell, delves into the topic with the goal of improving estimation with a few simple rules of thumb as well as improving the understanding of the culture and politics surrounding estimates that often cause conflicts.
SBLIM is an open source toolkit to simplify CIM/XML development. The presentation covers the basics of CIM and how to use SBLIM to do various common tasks a CIM client would need to do against a CIM Server.
Mobile phone texting (txting) is now ubiquitous - a comfortable UI to everybody that has a cell phone. With most age groups, the time spent texting far exceeds time making voice calls. Logically, Java developers should be considering txt interfaces to their applications.
We will look at adding mobile txt interfaces to three applications:
In November 2011, Gilt Groupe announced the availability of International Shipping on gilt.com. This feature was jointly developed by Gilt's New York and Portland engineering teams. Key pieces of this project were written in Java and Scala. Join us for a discussion about the production rollout strategy for this feature.
Heroku is a Polyglot Cloud Application Platform that supports Java, Scala. This session will teach you how to deploy apps using a "git push". The session will also address the importance of the share-nothing architecture for cloud scalability and alternatives to sticky sessions and session replication.
We will be discussing 2 open source portlets for Liferay that I recently created which integrates Twilio and PubNub. Twilio provides infrastructure APIs for businesses to build scalable, reliable voice and text messaging apps. PubNub provides real-time push notification PLUS unique device to device mass broadcasting. We'll look at easy of use of these 2 APIs and the Spring MVC portlets that wrap them.
More information on the portlets and the projects can be found at http://puresrc.com/web/guest/knowledge
This is a discussion about being agile with continuous integration (CI) in a Java enterprise. Topics covered will include:
Topics covered will include:
Apache CXF offers the most flexible support for both REST and SOAP of any Java web services stack, including support for different XML data bindings and JSON output for REST web services. In this presentation you'll see how to implement and deploy CXF web services, using both Java standards including JAX-RS and JAX-WS and custom CXF extensions. You'll also learn about the different configuration options supported by CXF, including Spring-based, annotation-based, and direct configuration in code, and get an idea of how easily web services projects can be implemented using CXF. Finally, you'll see how CXF fits into the Apache open source SOA infrastructure.
JSON has become the de-facto data interchange format for Internet web services. We'll examine open source libraries that make it easy for a Java developer to serialize objects to JSON. This presentation will include a discussion of three popular Java libraries ( json.org, Jackson, and GSON ) as well as a popular Scala library (lift-json).
This talk will provide a overview of Urban Airship's core data warehouse architecture - a system designed to handle capture, intake and analysis of data for 100s of millions of mobile devices with near real time precision. The talk will touch on Urban Airship's use of HBase, Hadoop Core, ZooKeeper, Kafka as well as home-grown services. Time permitting, the talk will also cover how Urban Airship takes a lean approach to working with volumes of data including the use of ad-hoc tools such as Pig and Cascading as well as how the company leverages the data architecture for fast customer discovery and innovations.
Are you interested in learning what a Java Virtual Machine (JVM) is and what it does for your Java applications? This presentation will provide insight into the inner workings of a Java Virtual Machine and some drill down on what compilers and garbage collectors do, so that you don't have to worry about it while programming your Java application.
In particular, you will learn about common optimizations, well established garbage collection algorithms, and what the current biggest challenge with Java scalability is today.
For the Java coder, GWT is currently as close as it gets to a multi-platform solution for web apps. After a quick GWT review, we will code about in the world of web apps you can run on your desktop and mobile phone, written in Java. This will be a superview presentation touching on GWT, GWT mobile libs and HTML5.
Google unveiled Android 3.0 in February 2011. This release provides a new UI and other features that are suited for mobile tablet devices. In this presentation, we'll discuss Android's new platform API's and highlight changes in the developer SDK.
The NoSQL movement has given developers many more data storage options, each with their own design considerations and trade-offs. One of the quieter options, semantic data stores (also called triple stores or quad stores), provide an interesting hybrid of key-value and graph database features, while offering a data model based on a W3C recommendation (RDF) and a standardized query language (SPARQL) that will feel familiar to anyone experienced with unfashionable SQL.
This talk will cover the basics of data modeling with RDF and how to use the open source Jena Semantic Web Framework to add a semantic datastore to a Java-based Web application.
Hi, I'm Merlyn, a Portland-based programmer with strong ties to both Agile PDX and Groovy. I'm also a member of an Agile team at YesMail, and I blog under the handle "curious attempt bunny".
Come to the session if you want to participate in learning more about Gradle. Gradle is a powerful layer of Groovy built on top of a number of established tools and libraries. Smart guys have borrowed from the pioneering work of Ant, Maven, Gant, Buildr and come up with an expressive, concise, and convention-rich build tool for the Java family.
For this session, there won't be any slides. I'm also not going to stand up and talk at you. Instead, I'm going to rely heavily on your involvement. I'll start with an introduction to Gradle, and then very quickly go into using it in practice. After a few minutes of that I'll open it up to go wherever we're most interested in. I'm not a Gradle expert, yet I believe that my Groovy background in conjunction with a few days of earnest usage have taught me a lot. This session will rely heavily on an internet connection, and we'll be googling for answers together if need be.
Do this ahead of time:
What is your intention for the session? Spend some time deliberately focusing on what it is you want out of the session. Bring that will you and share it with us. It will help us all focus on what's important and go some way to helping you get the most out of the session. Also, go have a quick read about Gradle on their website. That will save us all some time, help us get to the interesting details sooner, and be a good source of informed questions for you.
I'll also be building in some time at the end of the session to gather feedback that will help me learn to become a better facilitator.
There have been a number of recent significant high profile developments in the Java world. Taking these into account what does the future of Java hold? Bring your opinions and bias in what promises to be a lively, interesting discussion on an important topic.
This discussion will loosely work around the following areas and other topics that arise. We will hit the ones with the most interest first and work through them as time permits.
Doug will present his notes from this years JavaOne (And Oracle Dev) Conference. Come listen and share!
Almost every transaction executed on a JEE Application Server winds up distributed over multiple resources such as JMS destinations and JDBC datasources. Standard OTLP systems employ the XA-2PC protocol, a presumed-abort variant of the Two-Phase Commit protocol to make sure that either all resources commit successfully or all resources abort the transaction if at least one resource fails. As any distributed consensus protocol, XA-2PC is expensive. In this talk, we present Logging Last Resource (LLR) optimization of XA (actually, its JEE "translation" in form of the JTA spec) in Oracle WebLogic Server. LLR's effectiveness has been validated in world record results achieved by the Oracle stack in the SPECjAppServer2004 benchmark and by high-profile customers in mission-critical applications.
In this session Josh will give you an introduction to the Mobile Web, provide some real world examples, then dive into the technologies available to help you get your stuff onto mobile devices. This talk is not Palm webOS specific, but will cover webOS phones as well as other mobile devices.
Bring your opinions, experience and personal bias and join in a lively discussion on a highly pertinent topic.
Topical questions include but are not limited to:
Ant build scripts are an integral part of building and deploying many Java technology-based applications, but they're often custom-built for each project and vary across the enterprise. This presentation shows how Nike, Inc., reduced its Ant build scripts to almost nothing while preserving the functionality needed to do highly customized builds for everything from small standalone batch jobs to large enterprise projects.
This topic will be of interest to developers who develop and maintain Ant build scripts for multiple applications and need ways to minimize the amount of time and new scripts they need to write.
The session covers:
Why is it that the percentage of women graduating with computer science degrees around 50% in countries like Sweden, China and India, but less than 20% in America? As a "Geekdad" with a daughter, I found this unacceptable, and decided to do something about it... I went back to school... elementary school that is, to teach programming to the kids. My goal was to find an environment and a style that would encourage girls with curiosity to enjoy being controlling computers in creative ways, and in the process, encourage and involve every kid.
My talk discusses the journey of coming up with a girl-friendly curriculum for teaching programming that boys wouldn't notice anything different. I then show off some of the new crop of "Integrated Learning Environments", i.e. Alice, E-Toys and Scratch. I finally give an overview of my "Computer Club" and how others can use what I've done to teach others.
In the push to make use of tagging and other forms user-driven information architectures, developers have overlooked the value of adding semantics, or contextual meaning, directly to the data that powers web sites and applications. The addition of Microformats to a Web site's markup can further the exchange of semantic information such as contact information for people and events. For the most part, however, web sites and applications are still populated by largely non-semantic prose organized in large blocks of HTML or generated from the walled gardens of relational databases and data warehouses.
While everyone agrees that HTML isn't going away anytime soon, several Web Standards have arisen over the last few years to help application developers store, serve, and distribute information with ever-increasing levels of semantics and meaning. The current pinnacle of the Semantic Web Standards pyramid is OWL - the W3C's Web Ontology Language. In this talk I will describe the roots and basics of OWL and how it can be used to power the next generation of smart, data-enabled Web applications.
The Spring Insight console, part of tc Server Developer Edition, is a dashboard view of real-time Spring application performance metrics. Without changing their code, developers can use Spring Insight to detect, analyze and diagnose application performance issues right from their desktops.
Google Web Toolkit (GWT) is a development toolkit for building and optimizing complex browser-based applications. This talk will highlight new features in GWT 2.0. We'll discuss GWT 2.0 development mode, declarative UI, layout panels, and the new Google Plugin for Eclipse. Here's a link to the "podcast by phone" application. The app's GWT code is viewable here.
Josh will catch us up on the latest JavaFX release, 1.2, which includes lots of improvements to make JavaFX better for real world apps (speed, more controls, charts and graphs). Josh will also give us a sneak preview of features coming in future versions of JavaFX, along with some great demo apps.
Java Enterprise Performance Tuning typically is viewed as someone else's job.
QA will do it.
Operations will figure it out.
Isn't the Dev guys supposed to find these things?
But in fact it can and should be done across the lifecycle.
We will explore this new concept and other topics such as:
GPC4J is a computing paradigm that breaks a partitionable problem into GridPackets, which are routed, processed and re-assembled into the solution to the original problem. This presentation will cover the use of the system and design of the project's web application. The application is built using REST (Jersey), Maven, Hibernate, JPA, MySQL and GlassFish. Project website is http://126.96.36.199
Google App Engine lets you run your web applications in Google's datacenters. This presentation will focus on App Engine's Java runtime. We'll cover developer tools, the datastore, and core platform services. In addition, we'll discuss how to call third party web services from within the App Engine environment.
We will discuss building a Java Swing application (installed or web start) that saves it's data POJO's (Plain Old Java Objects) into SQL databases across the net (mySQL) or to a local embedded database (Derby) by using the JPA (Java Persistance API) and ORM (Object Relational Mapping) via Toplink or Eclipselink. You will see that REAL applications get to benefit from technology that typically lives in the world of Hibernate and Web Apps. You gotta love portable SQL database data persistance without building any tables or writing any SQL!
Project Bonneville is Chris Cowell-Shah's evenings-and-weekends open source project for measuring the performance of certain core Java SE features. Chris will review the results of these benchmarks with an eye to addressing the following questions:
Scala is a new language for the Java Platform that blends object-oriented and functional programming concepts. This talk will focus on the design choices of Scala, and what they mean for developer productivity. The talk will highlight what it means to program in a functional style, and show you how Scala facilitates a hybrid of functional and imperative programming styles. The talk will also explore how Scala compares to dynamic languages such as Ruby and Python. And you'll see examples of real, production Scala code that will illustrate what it feels like to program in Scala.
Join us for a conversation about web service programming. We'll discuss OAuth, an open protocol for secure API authorization, and Restlet, a REST web service framework. Additionally, we'll look at the OAuth Java API and demonstrate how to use OAuth in an Android application.
Functional programming is (again) a hot topic among developers. Languages such as Scala and Clojure have functional concepts at the core of the langauge, and even more solidly object-oriented languages such as Groovy and C# 3.0 include functional concepts. This talk will cover whether langauge really matters, some functional techiques that enhance the power of a languge, how to implement some of these using existing Java syntax and semantics, and the future of functional additions to the Java langauge.
Talk about strange bedfellows: what happens when you mix one part Lisp (one of the oldest computer languages), one part Java (so young, yet so well adopted), a healthy serving of functional programming, and a state-of-the-art concurrency layer on top? That's Clojure, which "feels like a general-purpose language beamed back from the near future." Clojure embraces functional programming with immutable data types and first class functions. It is fully interoperable with Java. Clojure's approach to concurrency includes asynchonous Agents, and Software Transactional Memory. Clojure is fast, elegant, dynamic, and scalable: a language for the future, today.
Patrick will present his work on a new open source initiative named Able. Able is a combination of a library and quickstart template that aims to tightly integrate several modern Java frameworks: Hibernate (persistence), Stripes (web framework), Guice (core container), and DWR (AJAX). By taking advantage of libraries that embrace annotations and generics, Able simplifies Java web development and provides integration at several levels, including validation, transaction handling, and object lifecycle management.
If you want to do some reading in advance, here are some relevant links:
As you know, Groovy is a slick scripting... er, dynamic language that integrates very well with the Java platform and Java technologies. This presentation will go over a way to introduce Groovy into your organization and programming environment via unit testing. After a brief introduction to the language, we'll go over why Groovy can make unit testing easier.
GWT is Google's Web Toolkit, a framework for building rich web applications entirely in Java. While a lot of people have heard of GWT, most haven't had a look to see just how easy it really is.
Finally, a live demonstration of coding in GWT will be shown, demonstrating how fast it is to develop web apps using this framework.
Poker bots! The term conjures images of programmers hacking away late at night, trying to make a fast buck. But how interesting is the subject really? Well, as it turns out, very interesting. The game of poker poses the dual problems of nondeterminism and limited information, making computer poker implementations a deeper conceptual challenge than deterministic open-information games like chess. Better, there now exists a body of academic literature dedicated to analyzing the subtleties of the problem. But best of all, the de facto standard environment for development of poker AI software is 100% pure Java.
This talk will begin with a bit of historical context, delve into the problem space, and then offer a demonstration and source-level view of working "bots". The bots run in an offline, not-for-money, but highly competitive game environment.
Basic knowledge of the rules to Hold'em Poker (both limit and no-limit tournament varieties) is helpful to understand the presentation. This is a legitimate AI presentation aimed at professional software developers and students. No license agreements or U.S. laws were violated during its creation - and if your goal is to "cheat" at online poker, this presentation won't help you very much.
Part 1 Hibernate the Traditional Way
Part 2 Hibernate with the Java Persistence API (JPA)
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. In this talk, we will discuss Android's platform API's and developer tools. We'll look at code for GPS location services and learn how to call Trimet's XML web service from an Android application.
The Gang of Four book should have been entitled "Palliatives for Statically Typed Languages", because the recipes it provides are cumbersome solutions to the problems it poses. Using powerful languages makes the solutions in the GoF book look hopelessly complicated. This session shows how to solve the same problems concisely, elegantly, and with far fewer lines of code using the facilities of dynamic languages.
WebDAV is a set of extensions to HTTP that enable clients to manage files on a remote server. In this talk, we will examine the WebDAV specification and learn how a WebDAV client communicates with a WebDAV server. Also, we will discuss how to use the Apache Jackrabbit WebDAV API to program a WebDAV client and a WebDAV server.
Dynamic languages on the JVM, an overview of up and coming new languages for the JVM and what advantages they have over pure Java; including Groovy, JRuby, JavaFX, and Scala. Also covers what improvements will be coming in the JVM to better support dynamic languages
Do you use Ant for your project builds? This talk will show you ways to improve your build scripts, expose common pitfalls, and should change the way you think about your build scripts. Included is a discussion on what Nike is doing to unify its build process. Our goal - a build script in 10 lines or less.
Think you're a Java expert? I did, too, until I read "Java Puzzlers" by Josh Bloch and Neal Gafter, which uses code examples to illuminate some of the more interesting characteristics of Java. This talk will present puzzles that are different from those in the book to show some of the sharp edges and corner cases of the language and API. While the immediate lessons taught by the puzzles are themselves instructive, the more important takeaway is being able to recognizing what sorts of things you need to watch out for, particularly when editing and debugging other people's code. The solutions will attempt to no only solve the puzzles, but also attempt to prevent mistakes and be elegant and beautiful.
FitNesse is a wiki based collaborative testing and documentation tool that provides a very simple way for teams to collaboratively create documents, specify tests and run those tests. It is a simple, elegant tool for automating acceptance tests. WATIJ is a pure Java API created to allow for the automation of web applications. Based on the simplicity of WATIR and enhanced by the power of Java, WATIJ automates functional testing of web applications through a real browser. Both FitNesse and WATIJ are open-source projects. Putting these two powerful tools has created a very powerful environment for automating testing of web applications. Test suites can be authored and maintained by people with minimal programming background with the wiki based testing advocated by FitNesse.
The talk introduces RAP to an audience of Java Developers by explaining key concepts, pointing-out noteworthy features and demonstrating the complete cycle of creating a small RAP application.
It's been more than 6 years since Java refactoring tools have "crossed the rubicon," yet very little has changed in mainstream refactoring tools; programmers didn't use the tools much then and they don't use them much now. Why not? In this talk, I'll explore how we know refactoring tools are underused, review a Java programmer's choices for refactoring tools, explain what's wrong with typical refactoring tools, describe what progress research into refactoring tools is making and isn't making, highlight toolmakers that have made a few significant improvements, and talk about a new breed of refactoring tools and why they make a difference.
Client side Java has come a long way in the last decade, but Java FX is going to be the biggest change since switching from AWT to Swing (maybe even bigger!). This is an overview of where client Java stands today, the new technologies coming soon, and the new tools that will let developers create incredible new client applications both on the desktop and off. After the overview we will deep dive into Java FX Script, a new programming language specifically designed for creating user interfaces.
Six months ago Jive Software launched a major new Web 2.0 product, Clearspace. We'll give you a behind the scenes look at what went into the design, implementation and launch of the application. How does a small engineering team create a Sharepoint killer? We'll the reveal the secret sauce that made it possible.Some major areas we'll cover:
The Java API for XML Web Services (JAX-WS) is the next generation of Java APIs for web services, replacing The Java API for XML Based RPC. JAX-WS focuses on ease of development along with aligning with the industries for web services. The JAX-WS reference implementation (RI) is a production quality, highly performant implementation of the JAX-WS 2.1 specification. This talk will present an overview of the JAX-WS APIs and then will spend the majority of the time presenting how web services can be developed with the JAX-WS RI as well as the architecture of the RI. As JAX-WS is part of the GlassFish project an overview of Glassfish will also be presented.
The 12th annual JavaOne is over - and there was alot of new and very cool that was presented in 5 days of sessions! Come have some pizza and get a superview of this years sessions. From the just announced JavaFX to a Java programmable RoboSapien.
Our presentation covers building sexy web and desktop applications using Java, Mozilla's new ECMAScript VM (Tamarin), the free Flex SDK, the Flex Builder Eclipse plugin, and Flex Data Services. The presentation is mostly demos and writing code, with only a couple slides to help describe architecture. The session is very interactive with lots of audience questions and participation.
Scott Davis is the Editor in Chief of aboutGroovy.com. The website, in addition to being, umm, about Groovy, is implemented in Grails. This talk shows you how to get started with Grails, but also talks about the experience of using it in a live, production web site.
Grails is a web framework that maximizes the strengths of familiar Java libraries Spring, Hibernate, and Sitemesh, to name a few while minimizing the XML jockeying it usually takes to get them all to play nicely with one another. It brings "Convention over Configuration" to Java. It uses Groovy as the language to glue the pieces together, which means that experienced JEE developers can learn Groovy in the context of libraries that they are already familiar with.
Grails includes a web server, a database, and all of the libraries necessary for a full-fledged web application. It will even generate a directory structure and scaffold common classes (Controllers, Views, etc.). It is no exaggeration to say that you will have your first application up and running in minutes. But Grails is more than about a quick start. In this talk, we'll look at ways to move beyond the default configurations. We'll deploy a Grails app to an external Tomcat instance instead of the included Jetty server. We'll move from the default HSQLDB database to MySQL. We'll include external JARs to bring new functionality to the mix.
The JavaServer Faces framework is a rapidly growing Java web framework that was created through the Java Community Process (JCP). Many vendors have adopted this technology and have developed rich component libraries and tool support. While JavaServer Faces provides a standard foundation on which to build web applications, it is only the beginning. Come get your questions answered such as:
See https://jsftemplating.dev.java.net for a preview.
In this presentation, we will examine JetBrains' (maker of Intellij IDEA) new product, TeamCity. TeamCity is a continuous integration build product similar to CruiseControl, but much easier to set up, maintain, and use. It has many more features which will increase your developer productivity.
This talk will review those features, and our experience at Nike in using this product. In addition, we will give a demo, including creating a continuous build for a new project in under 5 minutes. Could you do that with CruiseControl?
In this presentation, we will examine Java-based portal servers and the Java Portlet API. We will discuss portlet programming, portlet deployment, portal security and portal administration.
An introduction to the Jakarta Tapestry web application framework, which will explain the concepts and features of the framework while live coding simple applications. Tapestry forms, request cycle, component object mode. The use of several important components (including the powerful Table data grid) will be featured.
Tapestry is a powerful open-source Java web application framework that stands apart from most other technologies used for creating web applications.
Spring is a framework for building J2EE applications. Spring provides an extensive set of APIs covering database access, object-relational mapping, declarative transactions, aspect-oriented programming, and messaging. However, at its core Spring is an Inversion of Control (IoC) container that can wire your application layers together in a way that keeps them loosely coupled and improves testability. This talk will be a brief introduction to the Spring IoC container, and will feature a simple demo app that shows how few lines of code it takes to wire an application together with Spring.
Amazon spent ten years developing the world-class technology and content platform that powers the Amazon web site for millions of customers every day. Using Amazon Web Services (AWS), you can build software applications leveraging the same robust, scalable, and reliable technology. AWS now offers eight services with open APIs for developers to build applications. Learn how you can create innovative applications and then launch on-line businesses that make money. (LINK)
We'll distill a full week of announcements, tutorials and in-depth presentations into less than an hour. Want to know what's coming in Java 6 and 7? How to finally solve the double-checked locking idiom? The latest tools for managing JVM's in a production environment? Attend the talk for answers to these questions and more. Of course, we'll also show you which slides and audio casts that you'll want to download for yourself from the JavaOne 2006 website.
Come join us next at the next JUG and we'll talk in-depth about Maven 2. There are currrently no books available for Maven2 and it is considerably different than Maven1. So come join in the discussion and learn something new and useful.
Maven is a comprehensive project management, build and reporting tool. We'll create our own projects from using the default Maven archetypes and our own custom archetype. We'll discuss single and multi-project setups and project object model (POM) inheritance. We'll adapt an existing project that uses Ant. We'll create our own private company-wide Maven repository and Maven mirror. We'll cascade-build all of our projects with one command. We'll manage our transitive dependencies (including conflicts). We'll show how to write our own custom Maven plugin. And finally we'll use Maven to build our project website with all of the pointy-hair-pleasing reports.
With the Struts and WebWork merger announcement and the fact that Struts Action Framework 2.0 would be based on WebWork, the Java web application landscape is finally maturing and consolidating. As the leader of the action-style Java web frameworks, WebWork is relatively unknown but is about to be introduced to a very large community. Come learn about what makes WebWork so special to work with. This session will be extremely hands on and code intensive, so come prepared to ask questions and get involved! Topics covered include:
Join us in January as we discuss component based development (CBD). We will discuss the motivation behind CBD and the agility it gives your development team.
CBD can turbo-charge your team's efforts by encouraging good OO basics (Abstraction, Encapsulation, Polymorphism, Inheritance) and OO Principles (Encapsulate what varies, Favor composition over inheritance, Program to interfaces not impls).
CBD helps mitigate risks in your application by allowing easy replacement of components with an alternate implementation. CBD also encourages the easy use of mock objects and test-first development too.
We will discuss terms like "Inversion of Control" (IoC) and the "Hollywood Principle". We will talk about the importance of managing dependencies and ways to automatically wire dependent components.
Although we will focus on the most popular IoC container (Spring), we will also demonstrate different strategies of IoC such as the good ol' AbstractFactory and PicoContainer that existed before Spring. We will also see how it's possible, with proper design, to replace your IoC container with little impact to the project.
In this presentation, we will look at the Yahoo Maps web service API's. There will be a live demonstration of geocoding and map image generation. In addition, we will discuss how to implement a Yahoo Maps client using the Jakarta HttpClient library and an XML data binding library.
Compiere is a J2EE based ERP & CRM environment. The session concentrates on the technical architecture and design choices as well as the experiences starting with Java 1.3 to now 1.5.
Jorg Janke is the founder and principal of the Compiere ERP & CRM open source project. As the driving force behind Compiere's success, Jorg has more than 20 years of combined business and technical experience, holding all Sun Java and Oracle DBA certifications. Under Jorg's leadership, ComPiere, Inc. provides stewardship, development, support and training for the company's products as a key part of the overall support provided by Compiere's 50 + partners throughout the world. Before founding Compiere, Jorg was Director Enterprise Systems in Oracle's Application Development Division (Redwood Shores, CA) and Manager Business Applications at the EMEA HQ of Unisys (London). Previously, Jorg created an application for the retail and distribution markets and later joined ADV/Orga, the company from which SAP licensed its first version. Jorg holds a BA in Accounting and an MBA from the University of Sussex, United Kingdom.
Sitemesh (www.opensymphony.com/sitemesh) is a server-side Java web-page layout and decoration framework. Developers can use it to quickly and easily create consistent looking UIs and even use it for "panels" in server-side applications. This presentation will go in to detail about the problems Sitemesh solves, how it solves them and some advanced uses.
Bill Lynch is the VP of Engineering and a co-founder of Jive Software, a downtown Portland based software company. Bill has been using Sitemesh for a number of years and Jive Software uses it heavily in their products.
Argent Bar, Tuesday June 28th, 2005 - 6:00PM
Grab a brew and a bite and talk with your Portland colleagues about the last two days of new ideas!
Model Driven Architecture (MDA)
Realize a new level of productivity, agility and teamwork with MDA/J2EE
From the MDA FAQ:
"The MDA is a new way of developing applications and writing specifications, based on a platform-independent model (PIM) of the application or specification's business functionality and behavior. A complete MDA specification consists of a definitive platform-independent base model, plus one or more platform-specific models (PSM) and sets of interface definitions, each describing how the base model is implemented on a different middleware platform.
JFreeChart is an ideal library for generating pie charts, bar charts, line charts in a Java application. Join us for a technical presentation about JFreeChartÃ¢â‚¬â„¢s feature set and API. YouÃ¢â‚¬â„¢ll learn how to integrate JFreeChart into desktop applications and server-side applications.
Persistence is a key function in Enterprise Java applications. Java Data Objects (JDO) is revolutionizing the way Plain Old Java Objects (POJOs) are stored in relational databases by providing an abstract API for object persistence suitable for O/R mapping tools. The benefit to developers is a powerful, performant, scalable, lightweight model that promotes agile development. This session will provide a hands-on overview of JDO through an example of a web application, including many code examples. We will demonstrate the benefits of abstracting away the underlying details of JDBC and SQL coding. Covered topics include:
At the end of the session, attendees will have a firm introduction to JDO and object-relational mapping.
Java Server Faces (http://java.sun.com/j2ee/javaserverfaces/) promises to be the standard web application framework for Java applications. It was created through the Java Community Process (http://www.jcp.org/en/jsr/detail?id=127) with the collaboration of numerous companies and individuals.
In this discussion, Ken Paulsen from from Sun Microsystems, Inc. will provide an overview of JSF technology; demonstrate Sun Java Studio Creator, a JSF rapid application development tool; and host an interactive discussion surrounding JSF issues.
The Eclipse WebTools Platform project is an open source project from the Eclipse Foundation. WebTools is a collection of plugins for the Eclipse IDE that streamlines the development of J2EE web applications. In this talk, we will give an overview of Eclipse WebTools and demonstrate how to develop web applications using this toolset.
Struts is an application framework from the Apache Jakarta Project. It is widely used for enterprise web applications, which have unique characteristics and development problems. The Struts framework fits neatly into this environment, providing base classes and design patterns that expedite development and ease maintenance, especially for large applications. In this talk, we will give an overview of the Struts framework, including the configuration files and major components. We will also present several Struts design patterns and coding idioms that are useful for enterprise applications, which typically include complex workflow, as well as form-based data entry.
Enterprise Application Integration (EAI) has been a top priority within IT for a number of years, but EAI solutions can be costly and difficult to manage. The Enterprise Service Bus (ESB) model builds on traditional EAI concepts and message-oriented middleware to provide an event-driven, scalable approach to solving difficult EAI challenges. This presentation will describe the major characteristics of an ESB implementation, and how they fit together in real EAI projects. While ESB is a platform-neutral model, we will site examples of Sonic Software's Java-based implementation and ESB's relationship to Java standards such as JCA and JBI.
Business POS systems present a whole new array of design issues unlike those we typically deal with when programming Java application or enterprise apps. Wahoo! Some of the issues we will discuss are: simplistic touchscreen GUI design, data input without a keyboard, printing on a 3" receipt printer, bar code scanners, opening cash drawers, and interesting restaurant related database issues such as delayed transactions (aka "running a tab") and time based pricing (aka "happy hour"). After we review the issues, we will take a look at the implementation which will soon be deployed, and discuss what was done & what might have worked better.
Performance Tuning of J2EE applications has not been effective until recently. Most J2EE applications are not tuned using modern tools and methodologies due to their unique architecture compared to legacy applications. Effective performance tuning requires measurements which were not easily available until recently. This presentation will address performance tuning of J2EE applications that typically run in an application server framework. We will look at the right way to address performance tuning for J2EE applications by looking at a methodology as well as common J2EE performance bottlenecks.
The talk will include:
- What is a good methodology?
- Describe how the methodology is applied to common performance problems
- Examine 4 common performance problems and show how to detect/correct them - Q&A
Argent Bar, Tuesday June 29th, 2004 6:30PM
Hibernate is a "powerful, ultra-high performance object/relational persistence and query service for Java". Basically, Hibernate allows you to easily bridge the world of objects to the world of databases. It has the distinction of being the most popular Java mapping solution.
I have developed or seen a half-dozen home-grown mapping solutions. When I discovered Hibernate, I quickly realized its value. When developing Viztas's website I quickly decided to use this simple but powerful tool to map my database to POJOs (plain old Java objects).
The talk will include:
We will examine how to access a web service in a client-side Java application. Please join us for a technical discussion about topics such as JAX-RPC, SOAP, Swing, and WebStart.