工作也有些年头了,可是谈到新技术总是感觉跟不上潮流,暂时就JAVA技术来说,还是有点感慨。。。看来这篇文章,豁然明白了,懂的技术的要领,不要追求技术的潮流,才会让走在前面。
1.
你需要精通面向对象分析与设计
(OOA/OOD)
、涉及模式
(GOF
,
J2EEDP)
以及综合模式。你应该十分了解
UML
,尤其是
class
,
object
,
interaction
以及
statediagrams
。
2.
你需要学习
JAVA
语言的基础知识以及它的核心类库
(collections
,
serialization
,
streams
,
networking
,
multithreading
,
reflection
,
event
,
handling
,
NIO
,
localization
,以及其他
)
。
3.
你应该了解
JVM
,
classloaders
,
classreflect
,以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。
4.
如果你将要写客户端程序,你需要学习
WEB
的小应用程序
(applet)
,必需掌握
GUI
设计的思想和方法,以及桌面程序的
SWING
,
AWT
,
SWT
。你还应该对
UI
部件的
JAVABEAN
组件模式有所了解。
JAVABEANS
也被应用在
JSP
中以把业务逻辑从表现层中分离出来。
5.
你需要学习
java
数据库技术,如
JDBCAPI
并且会使用至少一种
persistence/ORM
构架,例如
Hibernate
,
JDO
,
CocoBase
,
TopLink
,
InsideLiberator(
国产
JDO
红工厂软件
)
或者
iBatis
。
6.
你还应该了解对象关系的阻抗失配的含义,以及它是如何影响业务对象的与关系型数据库的交互,和它的运行结果,还需要掌握不同的数据库产品运用,比如
:oracle
,
mysql
,
mssqlserver
。
7.
你需要学习
JAVA
的沙盒安全模式
(classloaders
,
bytecodeverification
,
managers
,
policyandpermissions
,
codesigning
,
digitalsignatures
,
cryptography
,
certification
,
Kerberos
,以及其他
)
还有不同的安全
/
认证
API
,例如
JAAS(JavaAuthenticationandAuthorizationService)
,
JCE (JavaCryptographyExtension)
,
JSSE(JavaSecureSocketExtension)
,以及
JGSS (JavaGeneralSecurityService)
。
8.
你需要学习
Servlets
,
JSP
,以及
JSTL(StandardTagLibraries)
和可以选择的第三方
TagLibraries
。
9.
你需要熟悉主流的网页框架,例如
JSF
,
Struts
,
Tapestry
,
Cocoon
,
WebWork
,以及他们下面的涉及模式,如
MVC/MODEL2
。
10.
你需要学习如何使用及管理
WEB
服务器,例如
tomcat
,
resin
,
Jrun
,并且知道如何在其基础上扩展和维护
WEB
程序。
11.
你需要学习分布式对象以及远程
API
,例如
RMI
和
RMI/IIOP
。
12.
你需要掌握各种流行中间件技术标准和与
java
结合实现,比如
Tuxedo
、
CROBA
,当然也包括
javaEE
本身。
13.
你需要学习最少一种的
XMLAPI
,例如
JAXP(JavaAPIforXMLProcessing)
,
JDOM(JavaforXMLDocumentObjectModel)
,
DOM4J
,或
JAXR(JavaAPIforXMLRegistries)
。
14.
你应该学习如何利用
JAVAAPI
和工具来构建
WebService
。例如
JAX-RPC(JavaAPIforXML/RPC)
,
SAAJ (SOAPwithAttachmentsAPIforJava)
,
JAXB(JavaArchitectureforXMLBinding)
,
JAXM(JavaAPIforXMLMessaging)
,
JAXR(JavaAPIforXMLRegistries)
,或者
JWSDP(JavaWebServicesDeveloperPack)
。
15.
你需要学习一门轻量级应用程序框架,例如
Spring
,
PicoContainer
,
Avalon
,以及它们的
IoC/DI
风格
(setter
,
constructor
,
interfaceinjection)
。
16.
你需要熟悉不同的
J2EE
技术,例如
JNDI(JavaNamingandDirectoryInterface)
,
JMS (JavaMessageService)
,
JTA/JTS(JavaTransactionAPI/JavaTransactionService)
,
JMX (JavaManagementeXtensions)
,以及
JavaMail
。
17.
你需要学习企业级
JavaBeans(EJB)
以及它们的不同组件模式:
Stateless/StatefulSessionBeans
,
EntityBeans(
包含
Bean- ManagedPersistence[BMP]
或者
Container-ManagedPersistence[CMP]
和它的
EJB-QL)
,或者
Message-DrivenBeans(MDB)
。
18.
你需要学习如何管理与配置一个
J2EE
应用程序服务器,如
WebLogic
,
JBoss
等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。
19.
你需要熟悉面向方面的程序设计以及面向属性的程序设计
(
这两个都被很容易混淆的缩写为
AOP)
,以及他们的主流
JAVA
规格和执行。例如
AspectJ
和
AspectWerkz
。
20.
你需要熟悉对不同有用的
API
和
frame‑‑work
等来为你服务。例如
Log4J(logging/tracing)
,
Quartz (scheduling)
,
JGroups(networkgroupcommunication)
,
JCache(distributedcaching)
,
Lucene(full-textsearch)
,
JakartaCommons
等等。
21.
如果你将要对接或者正和旧的系统或者本地平台,你需要学习
JNI (JavaNativeInterface) and JCA (JavaConnectorArchitecture)
。
22.
你需要熟悉
JINI
技术以及与它相关的分布式系统,比如掌握
CROBA
。
23.
你需要
JavaCommunityProcess(JCP)
以及他的不同
JavaSpecificationRequests(JSRs)
,例如
Portlets(168)
,
JOLAP(69)
,
DataMiningAPI(73)
,等等。
24.
你应该熟练掌握一种
JAVAIDE
例如
sunOne
,
netBeans
,
IntelliJIDEA
或者
Eclipse
。
(
有些人更喜欢
VI
或
EMACS
来编写文件。随便你用什么了:
)
25.JAVA(
精确的说是有些配置
)
是冗长的,它需要很多的人工代码
(
例如
EJB)
,所以你需要熟悉代码生成工具,例如
XDoclet
。
26.
你需要熟悉一种单元测试体系
(JNunit)
,并且学习不同的生成、部署工具
(Ant
,
Maven)
。
27.
你需要熟悉一些在
JAVA
开发中经常用到的软件工程过程。例如
RUP(RationalUnifiedProcess)andAgilemethodologies
。
28.
你需要能够深入了解加熟练操作和配置不同的
操作系统
,比如
GNU/linux
,
sunsolaris
,
macOS
等,做为跨平台软件的开发者。
29.
你还需要紧跟
java
发展的步伐,比如现在可以深入的学习
javaME
,以及各种
java
新规范,技术的运用,如新起的
web
富客户端技术。
30.
你必需要对
opensource
有所了解,因为至少
java
的很多技术直接是靠开源来驱动发展的,如
java3D
技术。