你需要精通面向對象分析與設計 (OOA/OOD) 、涉及模式 (GOF,J2EEDP) 以及綜合模式 . 你應該十分了解 UML, 尤其是 class,object,interaction 以及 statediagrams.
你需要學習 JAVA 語言的基礎知識以及它的核心類庫 (collections,serialization,streams,networking, multithreading,reflection,event,handling,NIO,localization, 以及其他 ).
你應該了解 JVM,classloaders,classreflect, 以及垃圾回收的基本工作機制等 . 你應該有能力反編譯一個類文件并且明白一些基本的匯編指令 .
如果你將要寫客戶端程序 , 你需要學習 WEB 的小應用程序 (applet), 必需掌握 GUI 設計的思想和方法 , 以及桌面程序的 SWING,AWT, SWT. 你還應該對 UI 部件的 JAVABEAN 組件模式有所了解 .JAVABEANS 也被應用在 JSP 中以把業(yè)務邏輯從表現層中分離出來 .
你需要學習 java 數據庫技術 , 如 JDBCAPI 并且會使用至少一種 persistence/ORM 構架 , 例如 Hibernate,JDO, CocoBase,TopLink,InsideLiberator( 國產 JDO 紅工廠軟件 ) 或者 iBatis. 你還應該了解對象關系的阻抗失配的含義 , 以及它是如何影響業(yè)務對象的與關系型數據庫的交互 , 和它的運行結果 , 還需要掌握不同的數據庫產品運用 , 比如 :oracle,mysql, mssqlserver.
你需要學習 JAVA 的沙盒安全模式 (classloaders,bytecodeverification,managers,policyandpermissions,
codesigning, digitalsignatures,cryptography,certification,Kerberos, 以及其他 ) 還有不同的安全 / 認證 API, 例如 JAAS(JavaAuthenticationandAuthorizationService),JCE (JavaCryptographyExtension),JSSE(JavaSecureSocketExtension), 以及 JGSS (JavaGeneralSecurityService).
你需要學習 Servlets,JSP, 以及 JSTL(StandardTagLibraries) 和可以選擇的第三方 TagLibraries.
你需要熟悉主流的網頁框架 , 例如 JSF,Struts,Tapestry,Cocoon,WebWork, 以及他們下面的涉及模式 , 如 MVC/MODEL2.
你需要學習如何使用及管理 WEB 服務器 , 例如 tomcat,resin,Jrun, 并且知道如何在其基礎上擴展和維護 WEB 程序 .
你需要學習分布式對象以及遠程 API, 例如 RMI 和 RMI/IIOP.
你需要掌握各種流行中間件技術標準和與 java 結合實現 , 比如 Tuxedo 、 CROBA, 當然也包括 javaEE 本身 .
你需要學習最少一種的 XMLAPI, 例如 JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J, 或 JAXR(JavaAPIforXMLRegistries).
你應該學習如何利用 JAVAAPI 和工具來構建 WebService. 例如 JAX-RPC(JavaAPIforXML/RPC),SAAJ (SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM(JavaAPIforXMLMessaging), JAXR(JavaAPIforXMLRegistries), 或者 JWSDP(JavaWebServicesDeveloperPack).
你需要學習一門輕量級應用程序框架 , 例如 Spring,PicoContainer,Avalon, 以及它們的 IoC/DI 風格 (setter,constructor,interfaceinjection).
你需要熟悉不同的 J2EE 技術 , 例如 JNDI(JavaNamingandDirectoryInterface),JMS (JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService),JMX (JavaManagementeXtensions), 以及 JavaMail.
你需要學習企業(yè)級 JavaBeans(EJB) 以及它們的不同組件模式: Stateless/StatefulSessionBeans,EntityBeans( 包含 Bean- ManagedPersistence[BMP] 或者 Container-ManagedPersistence[CMP] 和它的 EJB-QL), 或者 Message-DrivenBeans(MDB).
你需要學習如何管理與配置一個 J2EE 應用程序服務器 , 如 WebLogic,JBoss 等 , 并且利用它的附加服務 , 例如簇類 , 連接池以及分布式處理支援 . 你還需要了解如何在它上面封裝和配置應用程序并且能夠監(jiān)控、調整它的性能 .
你需要熟悉面向方面的程序設計以及面向屬性的程序設計 ( 這兩個都被很容易混淆的縮寫為 AOP), 以及他們的主流 JAVA 規(guī)格和執(zhí)行 . 例如 AspectJ 和 AspectWerkz.
你需要熟悉對不同有用的 API 和 frame work 等來為你服務 . 例如 Log4J(logging/tracing),Quartz(scheduling),JGroups (networkgroupcommunication),JCache(distributedcaching),Lucene(full-textsearch), JakartaCommons 等等 .
如果你將要對接或者正和舊的系統或者本地平臺 , 你需要學習 JNI(JavaNativeInterface)andJCA(JavaConnectorArchitecture).
你需要熟悉 JINI 技術以及與它相關的分布式系統 , 比如掌握 CROBA.
你需要 JavaCommunityProcess(JCP) 以及他的不同 JavaSpecificationRequests(JSRs), 例如 Portlets(168),JOLAP(69),DataMiningAPI(73), 等等 .
你應該熟練掌握一種 JAVAIDE 例如 sunOne,netBeans,IntelliJIDEA 或者 Eclipse.( 有些人更喜歡 VI 或 EMACS 來編寫文件 . 隨便你用什么了: ))
JAVA( 精確的說是有些配置 ) 是冗長的 , 它需要很多的人工代碼 ( 例如 EJB), 所以你需要熟悉代碼生成工具 , 例如 XDoclet.
你需要熟悉一種單元測試體系 (JNunit), 并且學習不同的生成、部署工具 (Ant,Maven).
你需要熟悉一些在 JAVA 開發(fā)中經常用到的軟件工程過程 . 例如 RUP(RationalUnifiedProcess)andAgilemethodologies.
你需要能夠深入了解加熟練操作和配置不同的操作系統 , 比如 GNU/linux,sunsolaris,macOS 等 , 做為跨平臺軟件的開發(fā)者 .
你還需要緊跟 java 發(fā)展的步伐 , 比如現在可以深入的學習 javaME, 以及各種 java 新規(guī)范 , 技術的運用 , 如新起的 web 富客戶端技術 .
你必需要對 opensource 有所了解 , 因為至少 java 的很多技術直接是靠開源來驅動發(fā)展的 , 如 java3D 技術 .