你需要精通面向对象分析与设计 (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 中以把业务逻辑从表现层中分离出来.
你需要学习 Java 数据库 技术, 并且会使用至少一种 persistence/ORM 构架, 例如 Hibernate,JDO,CocoBase,TopLink,InsideLiberator(国产 JDO 红工厂软件)或者 iBatis.
你还应该了解对象关系的阻抗失配的含义以及它是如何影响业务对象与关系型数据库的交互, 和它的运行结果. 还需要掌握不同的数据库产品运用, 比如 Oracle,MySQL ,SQL server.
你需要学习 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).
你应该学习如何利用 Java 的 API 和工具来构建 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.
你需要学习企业级 JavaBeans(EJB)以及它们的不同组件模式: Stateless/StatefulSessionBeans, EntityBeans(包含 Bean-ManagedPersistence[BMP]或者 Container- ManagedPersistence[CMP]和它的 EJB-QL), 或者 Message-DrivenBeans(MDB).
你需要学习如何管理与配置一个 J2EE 应用程序服务器, 如 WebLogic,JBoss 等, 并且利用它的附加服务, 例如簇类, 连接池以及分布式处理支援. 你还需要了解如何在它上面封装和配置应用程序并且能够监控, 调整它的性能.
你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为 AOP), 以及他们的主流 Java 规格和执行. 例如 AspectJ 和 AspectWerkz.
你需要熟悉对不同有用的 API 和 frame work 等来为你服务. 例如 Log4J(logging/tracing),Quartz(scheduling), JGroups(networkgroupcommunication),JCache(distributedcaching), Lucene(full-textsearch),JakartaCommons 等等.
你应该熟练掌握一种 JavaIDE 例如 sunOne,netBeans,IntelliJIDEA 或者 Eclipse.(有些人更喜欢 VI 或 Emacs 来编写文件. 随便你用什么了)
Java(精确的说是有些配置)是冗长的, 它需要很多的人工代码 (例如 EJB), 所以你需要熟悉代码生成工具, 例如 XDoclet.
你需要熟悉一种单元测试体系(JNunit), 并且学习不同的生成, 部署工具(Ant,Maven).
你需要熟悉一些在 Java 开发 中经常用到的软件工程过程. 例如 RUP(RationalUnifiedProcess)andAgilemethodologies.
你还需要紧跟 Java 发展的步伐, 比如现在可以深入的学习 Webwork2.0.
你必需要对实际项目的开发流程有所了解, 至少要有两个有实际应用价值的项目, 而不是练习项目! 因为现在企业看重的是你有没有实际的开发经验, 真正开发经验的体现就是你做的项目, 也就是有实际应用的项目!
来源: http://www.jianshu.com/p/b448444b9947