2001年?哇,时代变了。那是什么?Java 1.3?
首先,语言特点:
- 泛型:Java在2004年的5.0版本中添加了泛型,基本上是作为语法糖来阻止您从集合中进行所有从Objects进行的类型转换;
- 注释:同样在Java 5中。在Spring和其他地方的持久性框架中广泛使用;
- Typesafe枚举:Java 5添加了一个枚举类型,它基本上是一个类(某种);
- 并发性:Java 5添加了广泛的并发工具,因此多线程已经发生了很大变化。和
- 断言:Java 1.4中添加了一种未被充分利用的语言功能。如果在运行程序时启用了该功能,则资产可以检查各种条件,如果条件不正确,则可以对其进行轰炸。您可以在运行程序时将其打开或关闭的事实非常有助于诊断。
事情虽然如此,但以上内容甚至都不是什么大变化。在这十年的早期,Java经历了根本的架构和哲学变革。
早在2001年,大的事情就是EJB,Swing和servlets / JSP。他们都不是真的了(至少不是直接的)。
在Java中可能发生的最大事情(自从它诞生之初就是iho)是Spring,而Spring确实在大约5年前变得非常强大。Spring是一个轻量级的容器,它还试图隐藏不同提供程序和API之间的实现差异。但是,关于Spring的最大问题是“控制反转”或“依赖注入”的原理。这个想法是,类(“beans”)是从外部配置(“应用程序上下文”)组装而成的。
J2EE早期的一种典型模式是服务定位器。现在,它在很大程度上被视为反模式。基本上,您会看到如下代码:
public MyClass() { this.dataMember = ServiceLocator.locate("some service");}如果您最近提倡这种方法,那么您将被视为过时,业余爱好者,骗子或两者的结合。
依赖注入以最简单的形式将代替将必要的行为注入类中,而不考虑实际的实现。这种分离具有看似强大的功能,并且是Sun仍然没有真正接受的深刻转变。它还大大增强了单元测试。
摇摆仍然存在,但不再那么大。Sun在最近几个月中将JavaFX作为Flash竞争对手和applet替代产品发布。我个人认为它没有很大的未来(正如Joel在他最近的播客中所说的那样,台式机上的Java基本上已经死了),但是其他人会不同意。
EJB在2001年发展壮大。(正确地)将其视为XML配置的噩梦,应用服务器的差异使它们在很大程度上无法移植(如果您愿意,也很难移植),并且它们是如此重量级的解决方案(3.0之前的版本)真的没有那么多应用程序。
EJB 3.0采用了更多类似Spring的方法,即依赖注入(某种)和POJO注释(普通的旧Java对象)。
Servlet和JSP在2001年发展壮大。Struts在那时或之后不久就开始发展,直到几年前才开始发展。现在,它已经被其他更现代的Web框架所超越(例如Struts2-尽管名称为Spring MVC,Seam等,但与STruts 1并没有真正的联系)。
如今,不仅是Java语言,最大的问题是融合了Web和RIA。如今,Flash / Flex和Javascript / HTML /
CSS(以及框架)统治了这里(是的,虽然有GWT,但它的支持者很少)。
Weblogic和Websphere的规模不及2001年的规模。JBoss仍然有很大的发展动力,但如今,我选择的应用服务器是Sun的Glassfish
v2或v3 Prelude。
IDE也已更改。JBuilder在2001年很庞大。现在实际上只有三个:Eclipse,Netbeans和IntelliJ(按受欢迎程度排序是probalby,但我更喜欢IntelliJ,它也是其中的唯一商业版)。



