You are on page 1of 7

This DZone Refcard is brought to you by:

Unbreakable Data Access for Any Application


Performance, Functionality, and Reliability for Enterprise Applications

JDBC drivers, ODBC drivers, and ADO.NET data providers


• Oracle • 32-bit
• SQL Server • 64-bit
• DB2 • Windows
• Sybase • UNIX
• MySQL • Linux
• Others • More

www.datadirect.com/products/data-connectivity

Visit refcardz.com to browse and download the entire DZone Refcardz collection
brought to you by...
#101 Get More Refcardz! Visit refcardz.com

CONTENTS INCLUDE:

JDBC Best Practices


n
A Brief History
n
JDBC Basics
n
Driver Types and Architechture
n
Performance Considerations
n
Data Types By Jesse Davis
n
Advanced JDBC and more...

Statement stmt = con.createStatement();


A BRIEF HISTORY ResultSet results = stmt.executeQuery(“Select * from foo”);
String product;
int days = 0;
Sun Microsystems created JDBC in the 90s to be the standard while (results.next()){
product = results.getString(1);
for data access on the Java Platform. JDBC has evolved since days = results.getInt(2);
that time from a thin API on top of an ODBC driver to a fully System.out.println(product + “\t” + days);
}
featured data access standard whose capabilities have now
surpassed its aging brother, ODBC. In recent applications, The JDBC specification allows for fetching all data types
JDBC connects persistence layers (such as Hibernate or using getString or getObject; however, it is a best practice
Hot to use the correct getXXX method as demonstrated
JPA) to relational data sources; but the JDBC API with its Tip
accompanying drivers are always the final piece connecting
in the code sample above to avoid unnecessary data
conversions.
Java apps to their data! For more in depth (and entertaining)
history, watch this movie on the history of Java and JDBC: Executing a PreparedStatement
Use a PreparedStatement any time you have optional
http://www.youtube.com/watch?v=WAy9mgEYb6o
parameters to specify to the SQL Statement, or values that do
not convert easily to strings, for example BLOBs. It also helps
JDBC BASICS prevent SQL injection attacks when working with string values.
PreparedStatement pstmt = con.prepareStatement(“INSERT into table2
www.dzone.com

(ID, lastName, firstName) VALUES (?,?,?)”);


Connecting to a Server pstmt.setInt(1, 87);
pstmt.setString(2, “Picard”);
Getting a basic Connection object from the database is the pstmt.setString(3, “Jean-Luc”);
rowsInserted += pstmt.executeUpdate();
first operation to get a handle on. The code snippet below
gets a connection to a SQL Server database. Note that the Calling a Stored Procedure via CallableStatement
Class.forName line is unnecessary if you are using a JDBC 4.0 Use a CallableStatement any time you wish to execute a stored
driver with Java SE 6 or above. procedure on the server:
CallableStatement cstmt = con.prepareCall(“{CALL STPROC1 (?)}”);
String url = “jdbc:datadirect:sqlserver://nc-cqserver:1433;databaseNa cstmt.setString(1, “foo”);
me=testDB;user=test;password=test”; ResultSet rs = cstmt.executeQuery();
rs.next();
try {
int value = rs.getInt(1);
Class.forName(“com.ddtek.jdbc.sqlserver.SQLServerDriver”);
Connection con = DriverManager.getConnection(url);
} CallableStatements can return resultSets, even when
catch (Exception except) {
SQLException ex = new SQLException(
Hot inserting data on the server. If the application doesn’t know
“Error Establishing Connection: “ + Tip if results should be returned, check for results by issuing a
except.getMessage()); call to getMoreResults() after execution.
throw ex;
}

It is good to get metaData from the Connection object to


see what driver and server version you are using. This comes
JDBC Best Practices

in handy when its time to debug. Printing to system out or


logging to a file is preferable: Stop Wasting Time with Type 4 Driver Limitations
Today’s Java applications need a modern solution: Type 5 JDBC
DatabaseMetaData dbmd = con.getMetaData();
System.out.println( “\nConnected with “ +
dbmd.getDriverName() + “ “ + dbmd.getDriverVersion()
+ “{ “ + dbmd.getDriverMajorVersion() + “,” +
Try a Type 5 driver today for:
dbmd.getDriverMinorVersion() +” }” + “ to “ +
dbmd.getDatabaseProductName() + “ “ + • Oracle • Sybase
dbmd.getDatabaseProductVersion() + “\n”);
• SQL Server • MySQL
• DB2 • Informix
Retrieving Data
A straightforward approach to retrieving data from a database
is to simply select the data using a Statement object and Details at datadirect.com/products/jdbc
iterate through the ResultSet object:

DZone, Inc. | www.dzone.com


2
JDBC Best Practices

DRIVER TYPES AND ARCHITECTURE

TYPE 1: The JDBC-ODBC Bridge TYPE 3: Two Tier Architecture

The JDBC-ODBC Bridge was the Type 3 drivers sought to be a 100%


architecture that the first JDBC Java solution but never really gained
drivers adopted. This architecture much traction. Type 3 drivers had a
requires an implementation of Java client component and a Java
the JDBC API that then translates server component, where the latter
the incoming JDBC calls to the actually talked to the database.
appropriate ODBC calls using the JNI Although this was technically a full
(Java Native Interface). The requests Java solution, the database vendors
are then sent to the underlying ODBC did not like this approach as it was
driver (which at the time was just a costly – they would have to rewrite
shell over the database native client their native client libraries which
libraries). The bridge implementation were all C/C++. In addition, this
shipped with the JDK so you only didn’t increase the architectural
needed the ODBC drivers and native efficiency as we are really still a 3 tier
DB client libraries to get started. architecture so it is easy to see why  
Although this was a klunky and this was never a popular choice.
headache prone approach, it worked.
 

TYPE 2: Client Based TYPE 4: Wire Protocol Drivers

The next generation of JDBC Drivers The most popular JDBC driver
was the ever popular Type 2 driver architecture to date is Type 4.
architecture. This architecture This architecture encapsulates
eliminated the need for the ODBC the entirety of the JDBC API
driver and instead directly called the implementation along with all
native client libraries shipped by the the logic for communicating
database vendors. This was quickly directly with the database in a
adopted by the DB vendors as it was single driver. This allows for easy
quick and inexpensive to implement deployment and streamlines the
since they could reuse the existing C/ development process by having
C++ based native libraries. This choice a single tier and a small driver all
still left Java developers worrying about in a 100% java package.
version and platform compatibility
issues (i.e. client version 6 is not
supported on HP-Itanium processors).    
Some vendors still do their new development in
their native clients first. So, don’t assume that if Type 4 drivers have been the traditional favorite
Hot their website states that the JDBC driver supports Hot of Java application developers since its inception
Tip Kerberos that they mean their Type 4 driver – they Tip due to the clean design and ease of use; drop in the
may mean Type 2! driver jar and you’re up and running!

TYPE 5: NEW!

While not yet officially sanctioned by the JDBC Expert Performance Drivers specifically designed for multi-core, 64 bit,
Group, there is quite a bit of discussion surrounding the Architecture and virtualized environments.
new Type 5 driver proposal in the JDBC community. Getting Clean Spec Strict adherence to the JDBC standard, solving
down to the real functional differences, we see this list as the Implementation problems within the specification instead of using
requirements for Type 5 Drivers as follows: proprietary methods that promote vendor lock-in.

Advanced Type 5 drivers unlock code that has been trapped in


Codeless The ability to modify options, check statistics and Functionality the vendor native client libraries and bring that into
Configuration interact with the driver while it is running. Typically the Java community. Features include but are not
through a standard JMX MBean. limited to: Bulk Load, Client side High Availability,
Kerberos, and others.

DZone, Inc. | www.dzone.com


3
JDBC Best Practices

how often you are committing transactions. Every commit


PERFORMANCE CONSIDERATIONS causes the driver to send packet requests over the socket.
Additionally, the database performs the actual commit which
Pooling (Object Re-use) usually entails disk I/O on the server. Consider removing auto-
commit mode for your application and using manual commit
Pooling objects results in significant performance savings. instead to better control commit logic:
In JDBC, pooling Connection and Statement objects is the
Hot difference between a streamlined app and one that will Connection.setAutoCommit(false);
Tip consume all your memory. Make use of these pooling
suggestions for all your JDBC applications!
Virtualization and Scalability are key factors to consider
when choosing a JDBC driver. During the Performance
Connection Pooling – Enabling Connection pooling allows the Testing phase of your development cycle, ensure that your
pool manager to keep connections in a ‘pool’ after they are Hot JDBC driver is using the least amount of CPU and Memory
closed. The next time a connection is needed, if the connection Tip possible. You can get memory and CPU performance
options requested match one in the pool then that connection numbers from your driver vendor to see how the drivers
will scale when deployed in a Cloud or other virtualized
is returned instead of incurring the overhead of establishing
environment.
another actual socket connection to the server

Statement Pooling – Setting the MaxPooledStatements Network Traffic Reduction


connection option enables statement pooling. Reduce network traffic by following these guidelines.
Enabling statement pooling allows the driver to re-use
Technique Benefit
PreparedStatement objects. When PreparedStatements are
Use addBatch() instead of using Sends multiple insert requests in a single
closed they are returned to the pool instead of being freed
PreparedStatements to insert. network packet
and the next PreparedStatement with the same SQL statement
is retrieved from the pool rather than being instantiated and Eliminate unused column data Removing long data and LOBs from your
from your SQL statements queries can save megabytes of wire transfer!
prepared against the server.
Ensure that your database is For fetching larger result sets, this reduces
Don’t use PreparedStatements by default! If your SQL set to the maximum packet size the number of total packets sent/received
Hot statement doesn’t contain parameters use the Statement and that the driver matches that
packet size
between the driver and server
Tip object instead – this avoids a call to internal and wire level
prepare() methods and increases performance!

MetaData Performance JDBC DATA TYPES


• Specify as many arguments to DatabaseMetaData
methods as possible. This avoids unnecessary scans on Below is a list of common JDBC types and their default
the database. For example, don’t call getTables like this: mapping to Java types. For a complete list of data types,
conversion rules, and mapping tables, see the JDBC
ResultSet rs = dbmd.getTables(null,null,null,null);
conversion tables in the JDBC Specification or the Java SE API
documentation.
Specifying at least the schema will avoid returning
information on all tables for every schema when the JDBC Types Java Type
request is sent to the server:
CHAR, VARCHAR, java.lang.String
LONGVARCHAR
ResultSet rs = dbmd.getTables(null,”test”,null,null);
CLOB java.sql.Clob

• Most JDBC drivers populate the ResultSetMetaData NUMERIC, DECIMAL java.math.BigDecimal


object at fetch time because the needed data is
returned in the server responses to the fetch request. BIT, BOOLEAN Boolean
Some underutilized pieces of ResultSetMetaData include: BINARY, VARBINARY, byte[]
LONGVARBINARY
ResultSetMetaData.getColumnCount() BLOB java.sql.Blob
ResultSetMetaData.getColumnName()
ResultSetMetaData.getColumnType() DATE java.sql.Date
ResultSetMetaData.getColumnTypeName()
ResultSetMetaData.getColumnDisplaySize() TIME java.sql.Time
ResultSetMetaData.getPrecision()
ResultSetMetaData.getScale() TIMESTAMP java.sql.Timestamp

TINYINT byte

Instead of using getColumns to get data about a table, SMALLINT short


Hot consider issuing a dummy query and using the returned INTEGER int
Tip ResultSetMetaData which avoids querying the system
BIGINT long
tables!
REAL float
Commit Mode
FLOAT, DOUBLE double
When writing a JDBC application, make sure you consider

DZone, Inc. | www.dzone.com


4
JDBC Best Practices

WHAT’S IN A DRIVER?

To illustrate what a JDBC driver does under the covers, take a look at this ‘anatomy of a JDBC driver’ diagram.

as well as importing/exporting new statements on the fly to


ADVANCED JDBC fine tune application performance.
Encrypt Your Data using SSL
These advanced features are complex and meant as an Ensure that your data is secure by encrypting the wire traffic
Hot overview. For all the bells and whistles for these advanced between the server and client using SSL encryption:
Tip options, check your JDBC driver documentation!
(1) Set the EncryptionMethod connect option to SSL.

Debugging and Logging (2) Specify the location and password of the trustStore file
Well-written JDBC drivers offer ways to log the JDBC calls used for SSL server authentication. Set connect options
going through the driver for debugging purposes. As an or system properties (javax.net.ssl.trustStore and
example, to enable logging with some JDBC drivers, you javax.net.ssl.trustStorePassword).
simply set a connection option to turn on this spying capability: (3) If your database server is configured for SSL client
authentication, configure your keyStore information:
Class.forName(“com.ddtek.jdbc.sqlserver.SQLServerDriver”);
(a) Specify the location and password of the keyStore
Connection conn = DriverManager.getConnection file. Either set connect options or Java system
(“jdbc:datadirect:sqlserver://Server1:1433;User=TEST;Password=secret;
SpyAttributes=(log=(file)C:\\temp\\spy.log;linelimit=80;logTName=yes;t properties (javax.net.ssl.keyStore and javax.net.ssl.
imestamp=yes)”); keyStorePassword).
(b) If any key entry in the keyStore file is password-
Codeless Configuration (Hibernate and JPA)
protected, set the KeyPassword property to the
Codeless Configuration is the ability to change driver behavior
key password.
without having to change application code. Using a driver
under something like Hibernate or JPA means that the user Single Sign-on with Kerberos
cannot use proprietary extensions to the JDBC objects and Kerberos is an authentication protocol, which enables secure
should instead control and change driver behavior through proof of identity over a non-secure network. It is also used for
connection options. enabling single sign-on across multiple sites by delegating
credentials. To enable Kerberos:
Additionally, codeless configuration is the ability to monitor
and change JDBC driver behavior while the driver is in use. (1) Set the authenticationMethod connect option to
For example, using a tool like JConsole to connect to a driver Kerberos.
exported MBean and check the PreparedStatement pool stats (2) Modify the krb5.conf file to contain your Kerberos realm

DZone, Inc. | www.dzone.com


5
JDBC Best Practices

and the KDC name for that realm. Alternatively, you WHERE clause SELECT (col1, col2, col3)
can set the java.security.krb5.realm and java.security.krb5. FROM table1 WHERE col1 = ‘foo’

kdc system properties.


ORDER BY clause SELECT (col1,col2,…)
(3) If using Kerberos authentication with a Security Manager, FROM table_name
ORDER BY column_name [ASC|DESC]
grant security permissions to the application and driver.
GROUP BY clause SELECT column_name, aggregate_
These security features are not supported by all databases function(column_name)
Hot and database versions. Check to ensure your database is FROM table_name
WHERE column_name operator value
Tip setup appropriately before attempting Kerberos and SSL GROUP BY column_name
connections.
INSERT statement INSERT INTO table1
(all columns implicit) VALUES (val1, val2, value3,…)
Application Failover
(explicit columns) INSERT INTO table2
Application failover is the ability for a driver to detect a (col1,col2,…)
connection failure and seamlessly reconnect you to an alternate VALUES (val1, val2, value3,…)

server. Various types of failover exist for JDBC drivers so check UPDATE statement UPDATE table1
SET col1=val1, col2=val2,…
your driver documentation for support - the most common are WHERE col3=some_val
listed below:
DELETE statement DELETE FROM table1
WHERE col2=some_val
Connection In the case of the primary connection being unavailable, the
Failover connection will be established with the alternate server.
Escape Clauses
Extended Failover While the application is running, if a connection failover
occurs, the driver will reconnect to an alternate server and Escape Type Example
post a transaction failure to the application.
Call (a.k.a. stored procedure) {call statement}
{call getBookValues (?,?)}
Select Failover Same as extended, except instead of posting a transaction
failure, this level will reposition any ResultSets, so the
application will not know there was a failure at all. Function {fn functionCall}
SELECT {fn UCASE(Name)} FROM Employee

Bulk Loading Outer Join {oj outer-join}


where outer-join is
Loading large amounts of data into a database quickly requires table-reference {LEFT | RIGHT | FULL}
something more powerful than standard addBatch(). Database OUTER JOIN
{table-reference | outer-join} ON
vendors offer a way to bulk load data, bypassing the normal
search-condition
wire protocol and normal insert procedure. There are 2 ways to
use Bulk Loading with a JDBC driver that supports it: SELECT Customers.CustID, Customers.
Name, Orders.OrderID, Orders.Status
FROM {oj Customers LEFT OUTER JOIN
(1) Set enableBulkLoad connect option to true. This will
Orders ON Customers.CustID=Orders.
make addBatch() calls use the bulk load protocol over CustID} WHERE Orders.Status=’OPEN’
the wire.
Date Escape {d yyy-mm-dd}
(2) Use a Bulk Load object: UPDATE Orders SET OpenDate={d ‘2005-
01-31’} WHERE OrderID=1025
// Get Database Connection
Time Escape {t hh:mm:ss}
Connection con = DriverManager.getConnection(“jdbc:datadirect:orac UPDATE Orders SET OrderTime={t
le://server3:1521;ServiceName=ORCL;User=test;Password=secret”); ‘12:30:45’} WHERE OrderID=1025
// Get a DDBulkLoad object
TimeStamp Escape {ts yyyy-mm-dd hh:mm:ss[.f...]}
DDBulkLoad bulkLoad = DDBulkLoadFactory.getInstance(con); UPDATE Orders SET shipTS={ts ‘2005-02-
05 12:30:45’} WHERE OrderID=1025
bulkLoad.setTableName(“GBMAXTABLE”);

bulkLoad.load(“tmp.csv”);

// Alternatively, you can load from any ResultSet object into the
target table:
To get a listing of the functions supported by a given JDBC
Hot driver, use the getter methods on the DatabaseMetaData
bulkLoad.load(results);
Tip object: getStringFunctions(), getNumericFunctions(),
getTimeDateFunctions(), etc.

Hot For additional Bulk Load options, check the JDBC driver WildCard Description and Example
Tip documentation.
% (percent) Subsititute for zero or more characters.
SELECT * from emp where name like ‘Da%’

_ (underscore) Substitute for exactly one character.


SQL QUICK REFERENCE SELECT * from books where title like ‘_at in the Hat’

[charlist] Any single character in the charlist.


Basic Syntax Examples Select * from animals where name like ‘[cb]at’

SQL Construct Example


[!charlist] Any single character not in the charlist.
SELECT statement SELECT * from table1 -or- Select * from animals where name like ‘[!cb]at’
SELECT (col1,col2,…) from table1 [^charlist] Select * from animals where name like ‘[^cb]at’

DZone, Inc. | www.dzone.com


6
JDBC Best Practices

JDBC WITH HIBERNATE When choosing a driver to use with Hibernate, ensure your
Hot driver supports Codeless Configuration so that you can
Hibernate is one of the most popular Object Relational
Tip tune performance and change driver behavior without
having to modify the Hibernate code!
Mapping (ORM) frameworks used with JDBC. It is important
to note that even if you choose to use Hibernate instead of When writing Hibernate applications it is important to understand
writing pure JDBC, Hibernate must use a JDBC driver to get to the main files used to setup a Hibernate environment:
data! Therefore, Hibernate does not replace JDBC as the data Hibernate File Purpose
connectivity layer, it merely sits on top of it to interface with the Dialects (org.hibernate.dialect.*) Describes the SQL behavior of the JDBC
application: driver and database to which the application
is connecting.
Configuration File (hibernate. Contains the hibernate configuration
properties or hibernate.cfg.xml) settings, such as: JDBC driver and connection
information, dialect information, mapping
information, etc.
Mapping File The mapping file contains the mapping
between the application defined objects and
the relational data stored in the database.

Not all JDBC drivers are created equal! Look for a set of
JDBC drivers that can use a single dialect to connect to
Hot multiple versions of a database. There’s nothing worse than
Tip deploying your application with an Oracle 8 dialect and
discover that you need to redeploy with an
Oracle 10 dialect!
 

ABOUT THE AUTHOR RECOMMENDED BOOK


Jesse Davis watched his Dad code on his Apple IIC Plus, Performance and scalability are more critical than
and his addiction to technology began. He used his first PC (a ever in today’s enterprise database applications, and
Packard Bell) in high school to run Slackware Linux and began traditional database tuning isn’t nearly enough to solve
writing shell scripts and simple C applications. Honing his skills the performance problems you are likely to see in those
as a Computer Engineer at North Carolina State University, applications. Nowadays, 75-95% of the time it takes to
Jesse loved the challenge of combining hardware and software process a data request is typically spent in the database
and concentrated on microprocessor architecture and design - middleware. Today’s worst performance and scalability
graduating with honors in Y2K. Today, he enjoys teaching others problems are generally caused by issues with networking,
about the latest technological breakthroughs and enjoys building database drivers, the broader software/hardware
robots and woodworking projects with his kids. During the day, environment, and inefficient coding of data requests. In
he is the Senior Engineering Manager for the Progress|DataDirect The Data Access Handbook, two of the world’s leading
Connect product line, and has more than 12 years of experience experts on database access systematically address these
developing database middleware, including JDBC and ODBC drivers, ADO.NET issues, showing how to achieve remarkable improvements in performance of real-
providers, and data services. Jesse is responsible for product development initiatives world database applications.
and forward looking research, and is an active member of the JDBC Expert Group,
working on the next version of JDBC.
Blog: http://blogs.datadirect.com/ BUY NOW
Twitter: @jldavis007 books.dzone.com/books/data-access-handbook

#82

Browse our collection of 100 Free Cheat Sheets


Get More Refcardz! Visit refcardz.com

CONTENTS INCLUDE:


About Cloud Computing
Usage Scenarios Getting Started with

Aldon Cloud#64Computing

Underlying Concepts
Cost
by...

Upcoming Refcardz
youTechnologies ®

Data
t toTier
brough Comply.
borate.
Platform Management and more...

Chan
ge. Colla By Daniel Rubio

tion:
dz. com

also minimizes the need to make design changes to support


CON

tegra ternvasll
ABOUT CLOUD COMPUTING one time events. TEN TS
INC ■
HTML LUD E:

us Ind Anti-PPaat
Basics
Automated growthHTM
ref car

Web applications have always been deployed on servers & scalable


L vs XHT technologies

nuorn

Valid
ation one time events, cloud ML
connected to what is now deemed the ‘cloud’. Having the capability to support

Apache Ant
Usef
Du
ti

ul M.
computing platforms alsoulfacilitate
#84
Open the gradual growth curves

n an
Page Source

o

s
Vis it

However, the demands and technology used on such servers Structure

C
faced by web applications. Tools

Core
By Key ■
Elem

Patte
has changed substantially in recent years, especially with Structur
E: al Elem ents
INC LUD gration the entrance of service providers like Amazon, Google and Large scale growth scenarios involvingents
specialized
NTS and mor equipment
rdz !

ous Inte Change

HTML
CO NTE Microsoft. es e... away by
(e.g. load balancers and clusters) are all but abstracted
Continu at Every e chang
m

About ns to isolat
relying on a cloud computing platform’s technology.
Software i-patter
space

Hadoop
rdz .co


n
Re fca

e Work
Build
riptio
and Ant
Desc
These companies have a Privat
are in long deployed
trol repos
itory
webmana applications
ge HTM
L BAS

Patterns Control lop softw n-con to



that adapt and scale
Deve
les toto large user
a versio ing and making them
bases, In addition, several cloud computing ICSplatforms support data
ment ize merg
rn
Version e... Patte it all fi minim le HTM
Manage s and mor e Work knowledgeable in amany ine to
mainl aspects related tos multip
cloud computing. tier technologies that Lexceed the precedent set by Relational
space Comm and XHT

ref ca

Build
re

Privat lop on that utilize HTML MLReduce,


Practice Database Systems (RDBMS): is usedMap are web service APIs,

Deve code lines a system
d as thescalethe By An
sitory of work prog foundati
Ge t Mo

Buil Repo
This Refcard active
will introduce are within
to you to cloud riente computing, with an
d units
RATION etc. Some platforms ram support large grapRDBMS deployments.

The src
dy Ha
softw
e ine loping and Java s written in hical on of
INTEG attribute
task-o it all
softwar emphasis onDeve es by
Mainl these
ines providers, so youComm can better understand
also rece JavaScri user interfac web develop and the rris
Vis it

Spring Security
codel chang desc
INUOU ding Task Level as the
e code
w ww.dzone.com

NT of buil trol what it is a cloudnize


line Policy sourc es as aplatform
computing can offer your ut web output ive data pt. Server-s e in clien ment. the ima alt attribute ribes whe
T CO cess ion con Code Orga it chang e witho likew mec ide lang t-side ge is describe re the ima
ABOU the pro ject’s vers applications. and subm with uniqu
e name
are from
sourc CLOUD COMPUTING ise hanism. fromAND
PLATFORMS web unavaila
was onc use HTML The eme pages and uages like ge file
it
(CI) is Nested s alte
rd z!

a pro evel Comm the build softw um ble. rnate can be


gration ed to Task-L Label ies to
build minim UNDERLYING CONCEPTS e and XHT rging use HTM PHP tags text that
blem activit the bare standard a very loos Tags found,
ous Inte committ to a pro USAGE SCENARIOS ate all
Autom configurat
ion cies to t
ization, ely-defi
ML as
thei
Ajax
tech L can is disp
Continu ry change cannot be (and freq
nden ymen layed
solution fective ned lang r visual eng nologies
Re fca

Label
Build
manu
al
d tool
depe deplo t need but as if
eve , a ) stalle the same nmen for stan overlap uen
(i.e. , inef Build t, use target enviro Amazon EC2: Industry standard it has
software and uagvirtualization ine. HTM , so <a>< tly are) nest
with terns problem ce pre-in whether dards
ated b></
ory. ns (i.e. Autom Redu ymen
has bec become e with a> is
via pat ticular d deploEAR) in each very little L

Subversion
reposit -patter s that Pay only cieswhat you consume
tagge or Amazon’s cloud
the curr you cho platform
computing isome
heavily based moron fine. b></ ed insid
lained ) and anti the par solution duce nden For each (e.g. WAR es t
ent stan ose to writ more e imp a></ e
not lega each othe
x” b> is
be exp text to “fi are al Depeapplication deployment
Web ge until t a
librarifew years agonmen
t enviro was similar that will softwaredard
industry standard and virtualization app
e HTM technology.
orta nt,
tterns to pro Minim packa nden
Mo re

CI can ticular con used can rity all depe all targe
s will L or XHT arent. Reg the HTM l, but r. Tags
etimes Anti-pa they
tend
es, but to most phone services:
y Integ alizeplans with le that
late fialloted resources, ts with an and XHT simplify all help ML, und ardless
L VS
XHTM <a><
in a par hes som
Centr
end,
Binar
pro cess. the practic enti ng incurred costgeme
nt
whether e a single
such
temp
resources on
were consumed
t enviro
nmen
orthenot. Virtualization MLaare your
othe
you prov
erst of L
b></
in muchallows physical piece of hardware to
ide be HTM
rily bad
Mana based
approac ed with the cial, but, implem anding
Creat targe es to actually r web
nden
cy rties are nt
of the a solid L has
into differe coding.resources
necessa pared to
chang
efi Depe prope itting utilized by multiple operating
function systems.simplerThis allows foundati job adm been arou
associat to be ben
er
Ge t

te builds commo
are not Fortuna
late Verifi e comm than on
n com Cloud computing asRun it’sremo
known etoday has changed this.
befor alitytohas irably, nd for
They they
etc.
Temp Build (e.g. bandwidth, n memory, CPU) be allocated exclusively to tely exp that som
lts whe
ually,
appear effects. Privat y, contin Every elem mov used
to be, HTML
ecte job e time
ed resu The various resourcesPerfo rm a
consumed by webperio applications
dicall (e.g. nt team
pag
individual operating entsinstances. ed to CSS
system Brow d. Earl
y HTM has expand . Whi
gration
opme because
adverse unintend d Builds sitory Build r to devel common e (HTML . ser ed far le it has don
ous Inte web dev manufacture L had very
Stage Repo
e bandwidth, memory, CPU) areIntegtallied
ration on a per-unit CI serve basis or XHT
produc tinu e Build rm an from
extensio .) All are more e its
e.com

ard ML shar limit


tern.
ack elopers rs add than
Con Refc Privat
from zero) by Perfo
(starting all majorated cloud ed man ed layout
feedb computing platforms. As a user of Amazon’s esse
term e, this
on
n. HTM EC2 cloud
ntiallycomputing es certplatform, you are result anybody
the pat
occur came
gration as based is
of the ” cycl such Build Send
autom as they builds proc
assigned esso
an operating L system
files shouin the plai
same wayain elem
as on allents
hosting The late a lack of stan up with clev y competi
supp
ous Inte tional use and test concepts
soon n text ort.
ration ors as ion with r
tinu
Integ entat
ld not in st web dar er wor ng stan
ven “build include
docum
Con be cr kar dar
the con s to the standar
oper
to rate devel
While efer of CI Gene
notion

DZone, Inc.
Cloud Computing

the
s on
expand

ISBN-13: 978-1-934238-71-4
140 Preston Executive Dr. ISBN-10: 1-934238-71-6
Suite 100
50795
Cary, NC 27513

DZone communities deliver over 6 million pages each month to 888.678.0399


919.678.0300
more than 3.3 million software developers, architects and decision
Refcardz Feedback Welcome
$7.95

makers. DZone offers something for everyone, including news,


refcardz@dzone.com
tutorials, cheatsheets, blogs, feature articles, source code and more. 9 781934 238714
Sponsorship Opportunities
“DZone is a developer’s dream,” says PC Magazine.
sales@dzone.com
Copyright © 2010 DZone, Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, Version 1.0
photocopying, or otherwise, without prior written permission of the publisher.

You might also like