我正在申请java开发人员的工作.我在java中编写了一些爱好应用程序直到2001年,之后我主要使用c ++和其他语言.同时,感觉java已经增长了很多,并且有各种各样的首字母缩略词(EJB,spring等).
哪里可以找到最近(5年)java开发的简明明了的解释?要了解的关键要素是什么?
2001年?哇,时代变了.那是什么?Java 1.3?
首先,语言特点:
泛型:Java在2004年的5.0版本中添加了泛型,基本上作为语法糖来阻止你从对象中删除所有那些来自集合的演员;
注释:也在Java中5.广泛用于持久性框架,Spring和其他地方;
Typesafe枚举:Java 5添加了一个枚举类型,它基本上是一个类(有点);
并发:Java 5增加了广泛的并发工具,因此多线程已经发生了很大变化; 和
断言:Java 1.4中添加了一个高度低效的语言功能.如果在运行程序时启用,资产可以检查各种条件,如果不正确则弹出.在运行程序时可以打开或关闭它们的事实非常适合诊断.
但事情是,上述甚至都没有大的变化.在这个十年的早期,Java经历了激进的架构和哲学变革.
早在2001年,最重要的是EJB,Swing和servlets/JSP.他们中的任何一个都不再存在(至少不是直接).
Java中最重要的事情(自成立以来)是春天和春天,大约5年前真的变大了.Spring是一个轻量级容器,它还试图隐藏不同提供者和API之间的实现差异.然而,关于Spring的最大问题是"控制反转"或"依赖注入"的原则.这个想法是类("bean")是从外部配置("应用程序上下文")组装的.
早期J2EE时代的典型模式是服务定位器.它现在被视为一种反模式.基本上你会看到这样的代码:
public MyClass() { this.dataMember = ServiceLocator.locate("some service"); }
如果你现在提倡这种方法,你将被视为一个时代错误,业余爱好者,疯子或三者的组合.
最简单形式的依赖注入将在不考虑实际实现的情况下将必要的行为注入类中.这种分离具有欺骗性的强大功能,并且是Sun(仍然)没有真正重视的深刻转变.它还大大增强了单元测试.
Swing仍在,但不再那么大了.Sun最近几个月发布了JavaFX作为Flash的竞争对手和applet替代品.我个人认为它没有太大的未来(正如Joel在他最近的播客中所说的那样,桌面上的Java基本上已经死了)但其他人则不同意.
EJB在2001年很大.不再那么多了.它被(正确地)视为XML配置的噩梦,应用服务器的差异使它们在很大程度上是非便携式的(或者如果您愿意的话,它们非常便携)并且它们是如此重量级的解决方案(3.0之前版本)真的有那么多应用程序.
EJB 3.0采用了更类似于Spring的依赖注入方法(类型)和POJO注释(普通的旧Java对象).
Servlets和JSP在2001年都很重要.Struts从那时开始或者很快就开始了,直到几年前还很大.它现在被其他更现代的Web框架所超越(比如Struts 2 - 与STruts 1没有真正的关系,尽管名称是Spring MVC,Seam等).
现在最重要的事情 - 不只是在Java中 - 是Web和RIA的重点.Flash/Flex和Javascript/HTML/CSS(以及框架)最近在这里占据了主导地位(是的还有GWT,但它有一个小的跟随者).
Weblogic和Websphere并没有2001年那么大.JBoss仍然有很大的发展势头,但是现在我选择的appserver是Sun的Glassfish v2或v3 Prelude.
IDE也发生了变化.JBuilder在2001年很大.现在只有三个:Eclipse,Netbeans和IntelliJ(probalby按照受欢迎的顺序排列,但我的偏好是IntelliJ,它也是唯一的商业用户之一).