当前位置: 首页 > 面试题库 >

我如何最好地赶上Java的最新发展?

潘辰龙
2023-03-14
问题内容

我正在申请作为Java开发人员的工作。直到2001年,我才用Java编写了一些业余应用程序,此后,我主要使用c
++和其他语言工作。同时,感觉Java增长了很多,我不知道有各种各样的缩写(EJB,spring等)。

在哪里可以找到Java最近(五年)开发的简洁明了的解释?需要了解哪些关键要素?


问题答案:

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,它也是其中的唯一商业版)。



 类似资料:
  • 问题内容: 在另一个线程中,我表示我喜欢通过执行以下操作来居中GUI: 但是安德鲁·汤普森(Andrew Thompson)有不同的看法,而是打电话给 想问的人想知道为什么吗? 问题答案: 在我看来,屏幕中间的一个GUI看起来是这样的。我一直在等待它们消失,真正的GUI出现! 从Java 1.5开始,我们可以使用。哪一个.. 设置此窗口是否应在下一次使该窗口可见时显示在本机窗口系统的默认位置还是当

  • 问题内容: 我有一个Serializable对象,该对象应该将java.awt.Image作为其成员。我应该如何进行序列化? (抱歉,此版本是根据不太清晰的第一版编辑的。) 问题答案: ImageIcon实现了Serializable,可用于包装Image类 http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/ImageIcon.html

  • 问题内容: twitter API站点列出了3个Java twitter库。 Twitter4j java-twitter tw 你认识别人吗 您在支持,易用性,稳定性,社区性等方面的经验是什么 问题答案: 我认为Twitter4j很好,它是最新的API

  • 本文向大家介绍如何最好地在Google地图上显示HTML5地理位置的准确性?,包括了如何最好地在Google地图上显示HTML5地理位置的准确性?的使用技巧和注意事项,需要的朋友参考一下 要在Google Map上显示HTML5地理位置的准确性,请使用以下代码-

  • 我有一个场景,我想通过会话ID登录到自定义Log4j Appender。换句话说,我想为一个包(例如com.foo.bar)设置一个记录器,然后追加自定义Appender。只有当一个请求带有相同的会话标识时,我才希望记录要为匹配会话标识的Appender编写的消息。当我打开日志记录时,我们必须动态地添加一个Appender,并将其名称设置为会话我想做的是有一个预先配置的Appender,我从log

  • 问题内容: 在获取流之前进行空检查的最佳/惯用方式是什么? 我有接收可能为空的方法。因此,我不能只调用传入的值。如果值为null,是否有一些静态助手会给我一个空的流? 问题答案: 我同意Stuart Marks的观点,这是执行此操作的正确方法(请参见他的回答),或者至少是在Java 9之前的版本中进行此操作的正确方法(请参见下面的编辑),但是我将保留此答案以演示对可选API。 编辑: Java 9