Inside JavaBlackBelt: Architecture and Design

Last edited by John Rizzo on 2007-08-07 20:25

Conference Presentation - Inside JavaBlackBelt: Architecture and Design

This document describes the presentation "Inside JavaBlackBelt" that John Rizzo gives at some conferences in 2007-2008.

Other conference presentation: eXtreme Visual Learning.

Short Description

The co-founder of JavaBlackBelt explains the internals of the JavaBlackBelt.com platform.

  • strategic technical choices made and their evolutions, from inception to v3.
  • main technical problems faced
This presentation is very concrete on products experience and problems/solutions. It contains:

  • deep technical aspects
  • architecture and project life/management aspects
The main purpose of the presentation is that you learn something, from our experience, that you can apply to your current or next Java project.

The presentation goes through design aspects:

  • Requirements
  • General Architecture
  • Web (Struts 1 & 2, HTML/CSS, Ajax)
  • Spring
  • Data (RDB, Hibernate)
  • Project (team, lifecycle)
  • Infrastructure (Eclipse distributions, datacenters,...)
Full description: www.JavaBlackBelt.com/InsideJBB.

Full Description

The founder of JavaBlackBelt explains the internals of the JavaBlackBelt.com platform.

  • strategic technical choices made and their evolutions, from inception to v3.
  • main technical problems faced
JavaBlackBelt.com is an interesting case study:

  • classic Java modern architecture
  • made by a little team, the (too) agile way
  • 2 technical refactorings in 3 years
  • typical business web application, with typical Java technologies
This presentation is very concrete on products experience and problems/solutions. It contains:
  • deep technical aspects
  • architecture and project life/management aspects
We are (and the community is) very happy with the result. It was not that easy and did not happen overnight.
The main purpose of the presentation is that you learn something, from our experience, that you can apply to your current or next Java project.

Pre-requisites:
We'll very quickly re-explain the main technical background needed (as IoC, Hibernate, JSPs,...), but knowing these technologies will definitely help understanding the more concrete technical aspects of this presentation.

Duration:
From 45 to 120 minutes (according to the conference and audience background).

Example:
The Hibernate part of the presentation has been transcripted to the article Inside JavaBlackBelt: Hibernate. It gives a good sample of the presentation tone and technicity.


Table of Content

Requirements

  • Functional: JavaBlackBelt.com, what is that about ?
  • Time/budget
General Architecture
  • general design & architecture of the application
  • layers, domain model
  • main framewoks used
Web
  • Struts
    • Struts 1 to Struts 2 migration
    • Struts 2 pitfalls
  • Additional Java web classes
    • Some plumbing, we had to do ourselves
  • HTML/CSS
    • From very bad JSP, to 400 lines JSP, to 100 lines JSP
    • From Tiles to Sitemesh
    • From tables to divs
  • Ajax / JavaScript
    • Ajax, really ?
    • Cases: Mootools, overlib, congratulation box.
Spring
  • From Spring 1 to Spring 2
  • Declarative transactions
  • Struts 2 integration
Data
  • RDB
    • Normal form
    • Team work management with moving DB.
  • Hibernate
    see Inside JavaBlackBelt: Hibernate article.
    • From v2 to v3
    • Annotations vs XML
    • Hibernate session management
    • Time consuming bugs and problems
Project
  • Team
    • Dynamics
    • External contributions
    • budget: real vs optimum
  • Lifecycle
    • From inventing to stable mode
    • Test phase
  • Bug/Issue tracking
    • from text file, to JavaForge, to JIRA with MyLyn.
Infrastructure
  • Eclipse: from Eclipse to MyEclipse to Exadel to WTP
  • Source: From CVS, to subversion.
  • DB: PostGres
  • AppServer: Apache & Tomcat
  • OS: Linux
  • HW: From eApps, to Javalobby, to HostBasket




The following topics are optional, according to the remaining time for the presenter:

Performance Tuning

  • SQL Profiler with Hibernate
  • Memory leaks
  • In production alerts
Batch jobs
  • Web application needs batch jobs ? - examples.
  • From Timers to Quartz
Mails
  • Why producer/consumer
  • Velocity templates
  • Spam - Us ?
Programming Tasks (questions)
  • Let us run your code (virus) on our server...
  • Clustering and failover
  • DB - storing the jar files
Forum
  • From MvN, to JavaLobby, to JavaBB.
  • Integration needs & strategy