Speakers
- Dan Allen
- Aaron Bedra
- Tim Berglund
- Rohit Bhardwaj
- David Bock
- Stevie Borne
- Jeff Brown
- James Carr
- Scott Davis
- Jeremy Deane
- Keith Donald
- Michael Easter
- Robert Fischer
- Neal Ford
- Brian Gilstrap
- Andrew Glover
- Brian Goetz
- Stuart Halloway
- David Hussman
- Mark Johnson
- Dave Klein
- Scott Leberknight
- Tiffany Lentz
- Howard Lewis Ship
- Chris Maki
- Matthew McCullough
- Alex Miller
- Ted Neward
- Michael Nygard
- Pratik Patel
- Mark Richards
- Brian Sam-Bodden
- Srivaths Sankaran
- Nathaniel Schutta
- Aleksandar Seovic
- Ken Sipe
- Brian Sletten
- Matt Stine
- Venkat Subramaniam
- Burr Sutter
- Vladimir Vivien
- Mark Volkmann
- Craig Walls
- Richard Worth
Pratik Patel
Enterprise Architect
Pratik's specialty is in large-scale Java applications for mission-critical use. He has designed and built enterprise applications in the retail, health care, financial services, and telecoms sectors. Pratik holds a master's in Biomedical Engineering from UNC, has worked in places such as New York, London, and Hong Kong, and currently lives in Atlanta, GA.
Blog
Solution: FUTEX_WAIT hangs Java on Linux / Ubuntu in vmware or virtual box
Posted Sunday, January 24, 2010
Ok, I'm documenting this for those that hit this same problem. Is it taking a LONG time to run some Java app, making it seemingly hang? This happens when running Ubunt more »Diggin' Clojure and Compojure
Posted Wednesday, January 13, 2010
Over the xmas holidays I started learning Clojure. I'd been putting it off for a long time (since I saw Stuart Halloway present on it 9 months ago) so I read carefully through this lengthy article on Cloju more »Grails was so electric, it brought down the power grid
Posted Wednesday, November 18, 2009
Last nite's AJUG started off great. Burr, our venerable AJUG leader, started with a discussion on what stuff people wanted to see covered in AJUG more »Get RAD with Grails @ AJUG Nov 17
Posted Friday, November 13, 2009
I'm pleased to be presenting a session on Grails at the Atlanta Java User's Group (AJUG) next week. See details hereAJUG This is an intro level session, but I'm hoping people ask some advanced questions more »Gaelyk & Groovy & Google App Engine SCREENCAST online!
Posted Thursday, October 1, 2009
This was taken during the Atlanta Groovy and Grails User group meeting (ATL2G) in August 2009. The audio volume is a little low, I didn't have time to e more »ATL2G Aug 26: Groovy - Gaelyk - Appengine
Posted Friday, August 21, 2009
The August ATL2G is right around the corn more »Groovy March Madness
Posted Wednesday, March 25, 2009
So now that the annual basketball tournament is underway, I thought I'd share my latest tool for becoming master of your tournament pool. Here's a neat little groovy script to extract more »January 2009 ATL2G (Groovy & Grails Group): EasyB & Easiness
Posted Monday, January 26, 2009
The ATL2G January meeting is around the corner. We're going to kick off 2009 by jumping into the deep end of the Groovy & Grails pool with a presentation on Easyb and Easiness. Click o more »Another reason why Git is cool
Posted Friday, January 2, 2009
So I'm working on migrating back to Intellij to do some Groovy/Grails stuff (from Netbeans, but that's another long blog po more »Presentations
Real-world JEE performance tuning: Tips n' Tricks
Performance tuning any application is a black art that can consume much time. Fortunately, Java has many tools that can aid in this effort. There also are a number of basic tips that can help to analyze and fix performance problems. more »Groovy and Grails in the Enterprise
Dynamic languages running on the Java Virtual Machine are starting to gain traction for software development, specifically for large enterprise projects. This session explores obstacles to introducing dynamic languages into the enterprise, example applica more »Virtualization for development
We've all heard about virtualization for deploying applications. How about leveraging virtualization for development? In this session, we'll look at some time saving tips and build a virtual VM for development and testing. more »Enterprise JPA & Spring 3.0 - Tips and Tricks for JEE Persistence
As with many technologies, the basics are easy. The hard part comes when the developer needs to do sophisticated integration, development, and testing as part of an enterprise application. A large enterprise application requires the developer to think of more »The evolution of Java persistence: JPA 2.0
Doing basic Object-to-Relational Mapping is fun and easy with JPA. Annotate your persistent classes, define a couple of configuration parameters, and you're off and running. This session starts with a basic object model and adds persistence using annotati more »Easy mobile development (IPhone, Android, Palm Pre, Blackberry) without native code
So you have a great idea for an IPhone app, you've tried learning Objective-C, but it's just too hard. What about those other new platforms like Palm Pre and Android? Who wants to write the same app three times? more »Mobile Web - Creating websites ready for small devices
The mobile web has created a rush for companies to get their presence on small devices. Fortunately there are several open-source UI toolkits to help you create custom versions of your web site or web application for popular phone such as iPhone and Andro more »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 probl more »Easy iPad Development with HTML/CSS/Javascript
The Apple iPad promises to be a game changer in the tablet space. Running the iPhone OS, the iPad sports multi-touch, wireless connectivity and a 10" screen. The Apple way of developing for this platform is Objective-C with CocoaTouch. more »Performance tuning any application is a black art that can consume much time. Fortunately, Java has many tools that can aid in this effort. There also are a number of basic tips that can help to analyze and fix performance problems. The Java memory model is usually something that you don't need to tune, but for high performance applications it is necessary to tweak. While there are a number of advanced things that can be done to performance tune an application, we'll discover that the simple, basic things are all that are usually needed to make your apps fly.
This session looks at how to setup and run an application with profiling tools and monitoring tools. We'll setup an application to run and put it under heavy load. While running, we'll interactively monitor it and look for problems and how to go about finding and fixing them. We'll also cover the basic issues you should look for when performance tuning. We'll look at memory management and how to tune it appropriately. We'll also look at some of the Java 6 tools available to monitor performance and look at the JVM internals. We'll focus on the simple things that can be done right away and then look at some more advanced tweaks to identify and fix performance issues. Along the way, you'll learn some of the tips and tricks to performance tune.
Dynamic languages running on the Java Virtual Machine are starting to gain traction for software development, specifically for large enterprise projects. This session explores obstacles to introducing dynamic languages into the enterprise, example applications that can ease the way, and issues surrounding integrating a dynamic language to Java projects. Using several code examples that demonstrate the power of using a dynamic language like Jruby or Groovy, attendees will gain insight into how dynamic languages are making in-roads to the enterprise. This session focuses on non-GUI related usages – whereas most people think of dynamic languages for Web development. The target audience for this session is enterprise developers and enterprise architects.
Dynamic Languages for the JVM for the enterprise Why even bother using a dynamic language when Java works for me? When's the right time to use a dynamic language? Where's the right place to start using a dynamic language? Obstacles you'll face: political, developer training, integration Aren't dynamic languages just good for Web stuff? Examples of dynamic languages in the enterprise Code demo: sophisticated scripting on the JVM – building integrating with databases and messaging (JMS)
We've all heard about virtualization for deploying applications. How about leveraging virtualization for development? In this session, we'll look at some time saving tips and build a virtual VM for development and testing.
We've all heard about virtualization for deploying applications. How about leveraging virtualization for development? In this session, we'll look at some time saving tips and build a virtual VM for development and testing.
As with many technologies, the basics are easy. The hard part comes when the developer needs to do sophisticated integration, development, and testing as part of an enterprise application. A large enterprise application requires the developer to think of issues that affect the development, scalability and robustness of the application. This presentation will cover the advanced topics described below with a focus on the new persistence features in Spring 3.0 and JPA 2.0.
A large enterprise application often will have several sub-projects that each contain their own JPA persistence unit. This opens up a number of questions around how to organize the persistence units and how the code between sub-projects should interoperate. Developers will gain insight into these issues and will see a couple of solutions using live code examples.
Many enterprise applications require integration with an application server's JTA mechanism. JTA integration allows for JPA components to work with container managed transactions and distributed transactions. A typical usage scenario for JPA & JTA is this: read from a database using JPA, perform some business logic, put a message on a queue, write to the database (again using JPA). A JTA transaction allows you to ensure that the entire set of operations is committed or a rollback is performed. In this presentation, the developer will understand the limitations and configuration of using JTA and JPA together ? primarily through real code examples.
Once unit tests are written, developers often gloss over doing fine-grained integration testing just for their persistence layer. Integration testing with JPA means simply one thing: running your JPA components against your target database, for example, Oracle. Overlooking this aspect leads to problems being discovered later in the test cycle (UAT for example) and makes it more difficult to find and fix bugs. This presentation will use live code examples to explain a strategy for getting integration testing for free by reusing unit tests.
Using optimistic locking versus pessimistic locking seems clear cut to most developers. However, a full understanding of the issues with using pessimistic, or datastore, locking is required before making this decision. Developers will get information in the trade offs when using strategy or the other, and how these strategies can be used together with the same persistence unit.
Doing basic Object-to-Relational Mapping is fun and easy with JPA. Annotate your persistent classes, define a couple of configuration parameters, and you're off and running. This session starts with a basic object model and adds persistence using annotations. Learn how to do mappings for your object model for simple and complex relationships. Also learn how to map Java5 constructs like Enumerations. This course also covers new features in JPA 2.0, due out in late 2009.
We'll get into querying for data using JPA. JPA uses JPAQL, or the Java Persistence API Query Language. JPAQL is the object-oriented, rather than standard SQL, way of querying your persisted objects/data. Using many live code examples, developers will gain an understanding of how to write JPAQL. We'll also explore the very useful bulk update & delete feature of JPAQL.
So you have a great idea for an IPhone app, you've tried learning Objective-C, but it's just too hard. What about those other new platforms like Palm Pre and Android? Who wants to write the same app three times? Four times if you count Blackberry! Fear not, there is a much easier way for you to develop on the IPhone. Using a development style called "hybrid mobile applications" you can write apps for IPhone and other platforms using stuff you already know: HTML, CSS and Javascript. In this course, we'll go over the basics for hybrid development
This course outlines the basics of hybrid development. We'll cover the pro's and con's of this approach over writing native code for each specific mobile phone platform. Then we'll build an app and deploy it to an IPhone, all in the course of 90 mins - using simple technologies you already know: HTML, CSS, Javascript and JQuery. This isn't a webapp per se - it looks and feels and deploys just like a native app. You publish it to the App Store and people have to download & install it just like any other app.
The mobile web has created a rush for companies to get their presence on small devices. Fortunately there are several open-source UI toolkits to help you create custom versions of your web site or web application for popular phone such as iPhone and Android. This session explores these toolkits and best practices.
In this session, we'll code up a mobile-ready website. We'll also look at some best practices for creating these sites. We'll talk about the differences between various devices. Finally, we'll look at the emerging HTML5 standard and how you can leverage it now and in the future to make portable web sites. We'll look at the Webkit specific extension for designing web pages and the new Canvas features for doing graphics.
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!
The Apple iPad promises to be a game changer in the tablet space. Running the iPhone OS, the iPad sports multi-touch, wireless connectivity and a 10" screen. The Apple way of developing for this platform is Objective-C with CocoaTouch. In this session, you'll learn how to use stuff you already know to quickly build great looking apps.
Using frameworks like Phonegap and QuickConnect you can create awesome iPad applications - using stuff you know like HTML, CSS and Javascript. Learn about the cool things you can do with the embedded Webkit-based browser. Even 2D and 3D games and effect are possible, running at near native performance.
Prerequisite: Easy Mobile Development
Pratik's NFJS Schedule
Books
by Pratik Patel and Karl Moss
- Java Database Programming with JDBC by Pratik Patel and Karl Moss is an updated edition of the authors' guide to the Java Database Connectivity (JDBC) standard for database programming under Java. While the original edition was perhaps geared more to those developers who needed to write their own JDBC database drivers, a fairly arduous task, this new edition provides more background information on database connectivity issues in Java and so will be even more useful to the casual or intermediate programmer. After a general introduction to JDBC and Structured Query Language (SQL), useful even to beginning programmers, the authors start by building a simple database-aware applet. New chapters on "servlets," Java components that run on the server-side and manage database operations, as well as a general discussion of middleware technologies are particularly good. Database access for JavaBean components (from Sun Microsystems JDK 1.1) is also discussed, including working code for two database-aware beans. This book also includes a quick introduction to the Java language (which will only be helpful if you already know C/C++), a detailed reference for the JDBC API, and a working example of a text-based JDBC driver. Though this book is still oriented toward the JDBC driver developer, the authors now provide enough general discussion of JDBC architectural issues to make it worthwhile to any programmer who needs to ramp up on what JDBC is and what capabilities it offers.
by Pratik Patel and Karl Moss
- Java Database Programming with JDBC by Pratik Patel and Karl Moss is an updated edition of the authors' guide to the Java Database Connectivity (JDBC) standard for database programming under Java. While the original edition was perhaps geared more to those developers who needed to write their own JDBC database drivers, a fairly arduous task, this new edition provides more background information on database connectivity issues in Java and so will be even more useful to the casual or intermediate programmer. After a general introduction to JDBC and Structured Query Language (SQL), useful even to beginning programmers, the authors start by building a simple database-aware applet. New chapters on "servlets," Java components that run on the server-side and manage database operations, as well as a general discussion of middleware technologies are particularly good. Database access for JavaBean components (from Sun Microsystems JDK 1.1) is also discussed, including working code for two database-aware beans. This book also includes a quick introduction to the Java language (which will only be helpful if you already know C/C++), a detailed reference for the JDBC API, and a working example of a text-based JDBC driver. Though this book is still oriented toward the JDBC driver developer, the authors now provide enough general discussion of JDBC architectural issues to make it worthwhile to any programmer who needs to ramp up on what JDBC is and what capabilities it offers.
by Pratik R. Patel, Alan D. Hudson, and Donald A. Ball
- Enables readers to master the Java programming language for internet applications while expanding the scope of online development, and the accompanying CD contains powerful sample applets and a copy of Netscape Navigator. Original. (Intermediate).