220 likes | 341 Vues
This guide covers the essentials for setting up a Java development environment using various compilers, text editors, and utilities. It discusses the importance of using Java version 1.5 and the latest J2EE version 1.4, along with insights into using Ant as a powerful build tool. You'll learn how to manage log capabilities with Jakarta’s Log4J, create and manipulate files, and run SQL commands using JDBC. This resource is ideal for developers looking to streamline their Java application development processes across platforms.
E N D
Developing Environment Olivier de Pertat
Developing In Java • Text Editors • Java Compilers • Building Tools • Setting Your Environment • Logging Capabilities • Unit Testing
Java Compilers • Latest Java Version : 1.5 • Latest J2EE Version : 1.4 (1.5 is comming) • Many Providers : • SUN : Solaris, Win32, Linux x86 • IBM : AIX, Linux x86, Win32, Solaris, HP-UX, OS/390, z/Linux… • BEA : Linux iA64, Win32 • HP : HP-UX • Non Compliant JVM : • Microsoft J++ & Many old JVM • Warning : • For JAKARTA products on Linux Operating Systems it might be useful to use IBM JDK’s. • Old Microsoft JVM are not completely Java Compliant.
Building Tool : ANT • Command Line not suited to projects. • ANT : • Managed by XML File (build.xml). • Tag based Architecture. • Fully written in Java. • Runs on every OS that supports Java. • Extensible Application by development. • Not limitations like : Makefile, nmake, jam… • Developed by Jakarta from Apache Group. • An Industry Standard : • Used in IDE for Java Compilation : JBuilder, Jext, Emacs, JDE, NetBeans, JEdit, Eclipse, Visual Age For Java, WSAD • AS : WebLogic (deployment handled by ANT)
ANT (1) • Tag Structure : • Main tag : Project • One “project” tag by build file. • Specifies the default task to perform. • Specifies the working directory. • Default file : Build.xml <project name="j2ee-lesson" default="sys-about" basedir="."> <target name="sys-about"> <echo>Hello World ! </echo> </target> </project> • Command line : • ant <target>
ANT (2) • Variable declaration : <project name="j2ee-lesson" default="sys-about" basedir="."> <!--System variables --> <propertyenvironment="myenv" /> <propertyname=" PATH“ value="${myenv.PATH}" /> <propertyname="SQL_FILE" value="test.tmp.sql" /> • Java Compilation : <target name="j2ee-mk-class" depends=""> <buildnumber/> <echo>Compiling Java Source</echo> <javacsrcdir="${src}" debug="yes“destdir="${build}“classpath="${PROJECT_CLASSPATH}"/> </target>
ANT (3) • Java Execution : <target name="run-MyHello" depends="j2ee-mk-class"> <java classname="mytest.MyHello" fork="yes"> <jvmargvalue="${RUN_OPTION_1}" /> <classpath> <pathelementpath="${PROJECT_RUN_CLASSPATH}"/> </classpath> </java> </target> • File Manipulation : • Create Directory : <mkdirdir="${build}" /> • Delete files & directories : <deletedir="${build}" /> • Copy, Move files & directories • Compression : gzip, zip, jar, bzip2, tar • Security : chmod • Others : checksum, basename, concat, touch
ANT (4) • System Tasks Execution : <exec executable="j2ee.bat"> <envkey="CLASSPATH" value="${J2EE_CLASSPATH}" /> <argline="-verbose" /> </exec> • Network Services : • Mailing : mail • FTP : File transfer • RCS & CVS Management : cvs…
ANT (5) • SQL Commands (JDBC Way) : <target name="sys-OracleSQL" depends=""> <sqldriver="${ORACLE_DRIVER}" url="${ORACLE_URL}" userid="${ORACLE_USER}" password="${ORACLE_PASSWORD}" classpath="${ORACLE_CLASSPATH}" src="${SQL_SCRIPT}" print="true" /> </target> • SQL Commands (SQL*Plus Way) : <propertyname="DB_EXEC_ARGS" value="${ORACLE_USER}/${ORACLE_PASSWORD}@${ORACLE_NAME} @${SQL_SCRIPT}" /> <echo file="${SQL_SCRIPT}" append="true">exit;</echo> <echo>${DB_EXEC_ARGS}</echo> <exec dir="." executable="${ORACLE_SQLCMD}"> <argline="${DB_EXEC_ARGS}" /> </exec>
Logging Capabilities • Traces are needed : • Development • Debugging • Production & problem tracking • System.out : is limited and not persistent (#define) • Logging APIs: • Jakarta’s Log4J: Production reference • Most used in projects • Powerful • JDK 1.4 logging APIs (JSR-47): • Standard Java API since 1.4 VMs • Sun’s reference • Jakarta Common Logging (JCL): • Wrapper API for : Log4J, JDK 1.4, Avalon LogKit, Pre 1.4 JDKs, • Common functionalities present but not specifics
Log4J • LOG4J : • Developed JAKARTA (Apache Group) • Logging system dynamically & statically configurable • high-performance Java API • Defined levels : • FATAL : logger.fatal(“string”) • ERROR : logger.error(“string”) • WARNING : logger.warn(“string”) • INFO : logger.info(“string”); • DEBUG : logger.debug(“string”)
LOG4J (2) • Import needed : org.apache.log4j.*; • Sample In Java : static Logger logger = Logger.getLogger(mytest.MyLoggedHello.class.getName()); public MyLoggedHello() { logger.fatal("FATAL : Constructor called !"); logger.error("ERROR : Constructor called !"); logger.warn( "WARN : Constructor called !"); logger.info( "INFO : Constructor called !"); logger.debug("DEBUG : Constructor called !"); }
LOG4J (3) • File configuration : Log4J.properties (Console) log4j.rootCategory=DEBUG, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout • File configuration : Log4J.properties (File) log4j.rootCategory=INFO,R log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=wstools-debug.log log4j.appender.R.MaxFileSize=100KB log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n • JVM Arguments : java -Dlog4j.configuration=file:/Log4J.properties MyProgam
JDK Logging • Sun’s Flogging Framework • Logger / LogManager Architecture • Package: java.util.logging. • Levels are: • Level.SEVERE • Level.WARNING • Level.INFO • Level.CONFIG • Level.FINE • Level.FINER • Level.FINEST
JDK Logging (2) • Handlers: • StreamHandlers • Console Handlers • File Handler • SocketHandler • MemoryHandler • Formatters: • SimpleFormatter: simple chars output • XMLFormatter: XML File format output • JVM Parameter: • java -Djava.util.logging.config.file=monLogging.properties
Unit Testing : JUnit • Unit Testing : • Non-regression tests • Improve quality • Speed-up code writing • JUnit : • Developed JAKARTA • Command-Line or Graphical. • Simple Java API. • Package : junit.framework
JUnit (2) • JUnit Java Sample :
JUnit (3) • Running JUnit (Command Line) : public static void main(String [] args) { junit.textui.TestRunner.run(suite()); } • Running JUnit (Graphical) : java junit.swingui.TestRunner mytest.CheckMyHello
JUnit (4) • Using Standard Output : public void testItSays() { String lineSeparator = System.getProperty("line.separator"); ByteArrayOutputStream out4debug = new ByteArrayOutputStream(); PrintStream out_new = new PrintStream(out4debug); PrintStream out_bkp = System.out; MyHello objectTested = null; String outputExcepted = "Hello Object Built !" + lineSeparator; System.setOut(out_new); objectTested = new MyHello(); System.setOut(out_bkp); assertTrue((out4debug.toString()).equals(outputExcepted)); }
ODP’s JavaBox (1) • Tool Box packaged for Java programming: Everything is included! Nothing more is needed. • Java Standard Edition 1.4.2 (J2SE) • Java Entreprise Edition 1.4: • SUN Application Server: • Tools, libs… • 2 Database Engine: • PointBase Server • HSQL DB • Java Text Editor: JExt (Color highlight) • ANT: asant • Some useful utilities: • Custom Windows Shell • UNIX Basic utilities: tail, zip, md5sum.. • Why? • Simple. • No complex to understand IDE to learn. • Easy to install at work, at home… No special authorizations are needed to install it. Even in a cyber coffee as a guest user it works! • Can be used for large projects.
ODP’s JavaBox (2) • Installation: • Unzip the archive to anywhere you want. • Run the SHELL named “JavaShell.cmd”. It automatically detects whether or not installation has been processed. • Installation process is run once. • Installation is fast but can be slow down by Antivirus software
ODP’s JavaBox (3) • A virtual J: drive is mapped to your installation Directory. • Every source file should be placed in J:\src • To write your first program you should: • Launch a JavaShell • Launch JExt (thro ugh the shortcut placed in J:\bin) • Write your program • Save it to J:\src directory • Compile it by typing in the JavaShell: • Run it by typing in the JavaShell • Enjoy! J:\>asant make J:\>java MyFirstProgram