[b]你需要精通面向?qū)ο蠓治雠c設計(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應該十分了解UML,尤其是class,object,interaction以及state diagrams.
你需要學習JAVA語言的基礎知識以及它的核心類庫(collections,serialization,streams,networking,multithreading,reflection,event,handling,NIO,localization,以及其他)。
你應該了解JVM,class loaders,class reflect,以及垃圾回收的基本工作機制等。你應該有能力反編譯一個類文件并且明白一些基本的匯編指令。
如果你將要寫客戶端程序,你需要學習WEB的小應用程序(applet),必需掌握GUI設計的思想和方法,以及桌面程序的SWING,AWT,SWT。你還應該對UI部件的JAVABEAN組件模式有所了解。JAVABEANS也被應用在JSP中以把業(yè)務邏輯從表現(xiàn)層中分離出來。
你需要學習java數(shù)據(jù)庫技術(shù),如JDBC API并且會使用至少一種persistence/ORM構(gòu)架,例如Hibernate, JDO, CocoBase, TopLink,Inside Liberator(國產(chǎn)JDO 紅工廠軟件)或者iBatis。你還應該了解對象關(guān)系的阻抗失配的含義,以及它是如何影響業(yè)務對象的與關(guān)系型數(shù)據(jù)庫的交互,和它的運行結(jié)果,還需要掌握不同的數(shù)據(jù)庫產(chǎn)品運用,比如: oracle,mysql,ms sql server.
你需要學習JAVA的沙盒安全模式(class loaders, byte code verification, managers, policy and permissions, code signing, digital signatures, cryptography, certification, Kerberos,以及其他)還有不同的安全/認證API,例如JAAS( Java Authentication and Authorization Service), JCE (Java Cryptography Extension), JSSE (Java Secure Socket Extension), 以及 JGSS (Java General Security Service).
你需要學習Servlets, JSP, 以及JSTL(Standard Tag Libraries)和可以選擇的第三方Tag Libraries。
你需要熟悉主流的網(wǎng)頁框架,例如JSF, Struts, Tapestry, Cocoon, WebWork, 以及他們下面的涉及模式,如MVC/MODEL2.
你需要學習如何使用及管理WEB服務器,例如tomcat,resin,Jrun,并且知道如何在其基礎上擴展和維護WEB程序。
你需要學習分布式對象以及遠程API,例如RMI和RMI/IIOP。
你需要掌握各種流行中間件技術(shù)標準和與java結(jié)合實現(xiàn),比如Tuxedo、CROBA,當然也包括java EE 本身.
你需要學習最少一種的XML API,例如JAXP (Java API for XML Processing), JDOM (Java for XML Document Object Model), DOM4J, 或 JAXR (Java API for XML Registries).
你應該學習如何利用JAVA API和工具來構(gòu)建Web Service。例如JAX-RPC (Java API for XML/RPC), SAAJ (SOAP with Attachments API for Java), JAXB (Java Architecture for XML Binding), JAXM (Java API for XML Messaging), JAXR (Java API for XML Registries), 或者 JWSDP (Java Web Services Developer Pack)。
你需要學習一門輕量級應用程序框架,例如Spring, PicoContainer, Avalon, 以及它們的IoC/DI 風格(setter, constructor, interface injection)。
你需要熟悉不同的J2EE技術(shù),例如JNDI (Java Naming and Directory Interface), JMS (Java Message Service), JTA/JTS (Java Transaction API/Java Transaction Service), JMX (Java Management eXtensions), 以及 JavaMail.
你需要學習企業(yè)級Java Beans(EJB)以及它們的不同組件模式:Stateless/Stateful Session Beans, Entity Beans (包含Bean-Managed Persistence [BMP] 或者 Container-Managed Persistence [CMP] 和它的 EJB-QL), 或者Message-Driven Beans (MDB).
你需要學習如何管理與配置一個J2EE應用程序服務器,如WebLogic ,JBoss等,并且利用它的附加服務,例如簇類,連接池以及分布式處理支援。你還需要了解如何在它上面封裝和配置應用程序并且能夠監(jiān)控、調(diào)整它的性能。
你需要熟悉面向方面的程序設計以及面向?qū)傩缘某绦蛟O計(這兩個都被很容易混淆的縮寫為AOP),以及他們的主流JAVA規(guī)格和執(zhí)行。例如AspectJ 和AspectWerkz。
你需要熟悉對不同有用的API和framework等來為你服務。例如Log4J (logging/tracing), Quartz (scheduling), JGroups (network group communication), JCache (distributed caching), Lucene (full-text search), Jakarta Commons等等。
如果你將要對接或者正和舊的系統(tǒng)或者本地平臺,你需要學習JNI (Java Native Interface) and JCA (Java Connector Architecture).
你需要熟悉JINI技術(shù)以及與它相關(guān)的分布式系統(tǒng),比如掌握CROBA。
你需要Java Community Process(JCP)以及他的不同Java Specification Requests (JSRs), 例如 Portlets (168), JOLAP (69), Data Mining API (73), 等等。
你應該熟練掌握一種JAVA IDE例如sunOne ,netBeans ,IntelliJ IDEA或者Eclipse。(有些人更喜歡VI或EMACS來編寫文件。隨便你用什么了:))
JAVA(精確的說是有些配置)是冗長的,它需要很多的人工代碼(例如EJB),所以你需要熟悉代碼生成工具,例如XDoclet。
你需要熟悉一種單元測試體系(JNunit),并且學習不同的生成、部署工具(Ant, Maven)。
你需要熟悉一些在JAVA開發(fā)中經(jīng)常用到的軟件工程過程。例如RUP (Rational Unified Process) and Agile methodologies.
你需要能夠深入了解加熟練操作和配置不同的操作系統(tǒng),比如GNU/linux ,sun solaris,mac OS等,做為跨平臺軟件的開發(fā)者。
你還需要緊跟java發(fā)展的步伐,比如現(xiàn)在可以深入的學習java ME ,以及各種java 新規(guī)范,技術(shù)的運用,如 新起的web富客戶端技術(shù)。
你必需要對open source有所了解,因為至少java 的很多技術(shù)直接是靠開源來驅(qū)動發(fā)展的 ,如 java 3D技術(shù)。[/b]