学习Java EE 6中制作Java Web应用程序需要什么?

102

我想要制作网络应用程序!

我已经阅读了《Headfirst - Java》和《Headfirst - Servlets and JSP》这两本书。

因为这个主题(网络应用程序)非常庞大和复杂,我想问一下接下来该学习什么。当我看到Java EE、EJB、JSF、JPA、Glassfish等词语时,感到非常疲劳,但我不会放弃。

请问有人能告诉我该如何继续学习吗?我应该阅读像这样的一本书吗: Beginning Java EE 6 Platform with GlassFish 3: From Novice to Professional 还是应该做一些在线教程?

谢谢!


1
我已经阅读了这两个线程。但是再次强调:在这些线程中,他们只是说“学习Tomcat、JBoss、Hibernate,学习这个或那个等等……”只是随意地抛出一些词语。 但我想知道应该学习哪本具体的书籍或教程。 也许没有这样的方法,我必须通过查找每一个单词来“低效地”学习它。我只是希望能得到一个如何继续的建议。 - creativz
1
如果你对核心Java有很好的了解,我建议你从《Head First Servlets and JSP》入手。如果你对Java编程语言不够熟悉,那么首先需要对它有一些实践经验,然后再进一步学习Web应用程序开发。 - Rachel
22
除了所有这些问题都已过时,因为Java EE 6已经发布了... - Pascal Thivent
4
嗨,Stephen。实际上我认为存在很大的差距,尤其是在网络部分(使用Servlet 3.0或JSF 2.0和CDI托管Bean)。 - Pascal Thivent
1
有趣的是,像这样的许多高票通用问题都被关闭为“不具建设性”。我认为它们非常有建设性,但很难以建设性的方式回答。它们确实有助于看到一个人正在做什么或应该做什么的更大画面。但很高兴它们可以留在SO上。 - jackthehipster
显示剩余4条评论
7个回答

175

尽管我知道这可能会引起争议,但我的建议是仅使用Java EE 6。所以,请获取GlassFish v3,并获取书籍《Beginning Java EE 6 Platform with GlassFish 3: From Novice to Professional》,或遵循Java EE 6教程。在我看来,该书(我已开始阅读,因此我知道我在谈论什么)提供了更多指导,如果您是“完全”陌生的话这也许是更可取的选择(它涵盖了Java EE平台及其API和构建、部署应用程序的环境)。

现在,正如我所说,我已经可以听到有人说类似于“Java EE太重了,改用Spring,学习Struts或Wicket或Stripes用于表示层,学习Hibernate用于持久化或者不用ORM,改用iBatis或直接使用JDBC代替(你会发现,这对于Spring而言非常酷,Spring非常酷),并使用Tomcat(为什么不是Jetty)、JBoss,或者干脆放弃这一切,转向Grails等等......”

但我认为这并不真正对初学者有所帮助,如果没有导师或指导(您不会找到覆盖所有组合的过时资源),这听起来必须非常混乱。

因为我认为Java EE 6相比之前的版本有很大的进步,因为它为你所有的需求提供了非常不错的标准API(包括Servlet 3.0、JSF 2.0、JPA 2.0、EJB 3.1 Lite、Bean Validation 1.0、CDI等),这些API都非常不错,学习它们没有任何问题,但已经是一个巨大的任务了,所以你必须从某个地方开始,我建议只专注于Java EE 6,并暂时忘记其他框架。更具体地说,我会从Java EE 6 Web Profile开始(然后如果需要,再添加其他内容)。

通过这样做,1)你将开始学习全新的东西,2)你将给其他所有框架和/或工具一些时间去适应并证明它们仍然有存在的必要性。如果确实有必要,那么仍然有时间来尝试这些幸存者,并且你将能够更好地理解它们存在的原因。


3
谢谢。关于这本书,我没有完全阅读过它,但我一定会推荐给想要了解Java EE 6的初学者和有经验的开发人员。这本书结构合理,涵盖了许多API(没有太多遗漏),并且提供了演示所提内容的代码示例,它们非常易于理解,并可以深入探究。未来可能会出现更加专业的书籍,但这本书还是很不错的。 - Pascal Thivent
24
+1,但是 Spring 真的太酷了 :-) - ChssPly76
13
不要误解我,Stripes、Spring、Hibernate等都非常棒。但是,在探索新事物时,过多的选择可能会令人感到困惑。我相信Java EE 6可以让你在不使用它们的情况下开始。 - Pascal Thivent
9
我同意你的观点,学习JEE堆栈非常重要,即使你不会使用其中的任何内容。毕竟,该堆栈是所有出色框架的基础,这些框架让事情变得真正优秀。例如,Wicket是建立在前端控制器概念的基础之上,而在Java世界中,这意味着Servlets和Filters。如果你不知道它们的工作原理,你也不会真正理解Wicket正在做什么!当然,除非你接受“魔术!”作为答案。 - Esko
13
四年多后,你是否会对你的答案做出任何更改? - jlars62
显示剩余4条评论

26

我的建议是停止阅读书籍,开始实践。根据我的经验,阅读书籍并不能替代通过实际做事所获得的知识。

当然...你可以稍后回来再阅读一些书籍。在你实践后,你可能会从书籍中获取更多知识。


1 - 上下文:这是给刚读完两本相关主题书籍,并正在寻找更多书籍阅读者的建议。在实践中,你需要平衡阅读和实践。


29
但它可以为您节省搜索的时间。还可以给您足够的知识来回答问题,而不是提问,并最终在这里获得高声望,您同意吗? - Muhammad Gelbana
6
我不同意。OP已经读了两本Java/Java EE书籍,现在是时候动手编程了。顺便说一下,我大部分知识都不是通过阅读书籍获得的。相反,我主要是通过实践实现事情,并在需要时参考文档来获得知识的。你不会通过读书学会骑自行车...也不会通过这种方式学习编程技巧。 - Stephen C
4
重要的是平衡“阅读”和“实践”。 - smwikipedia

8

Java EE 6非常惊人。唯一的问题是它才发布了2周,目前只有1个容器提供其功能——Glassfish。

我对Glassfish没有任何意见,我在很多地方都使用它,有几个生产实例,我喜欢这个产品和项目。

话虽如此,Java EE 6的细节不能转换回Java EE 5。有些可以,但Web Profile、Servlet 3.0、新Bean类型、JPA 2等不在其中。

因此,通过先学习Java EE 6,您只是将自己限制在单个容器中。更多的容器正在到来,但它们还没有出现。

Tomcat、JBoss、OpenEJB、Glassfish、Jetty、Resin、Geronimo等都与Java EE 5规范良好地配合(至少支持规范的那些部分,例如Tomcat没有EJB)。

我想不出Java EE 5中没有被带入Java EE 6的任何内容。Java EE 6使一些非常古老的方面变成可选项,而今天您根本不需要学习这些。Java EE 6使一些Java EE 5的东西甚至更容易(特别是打包,例如EJB Lite)。

现在学习Java EE 5,以便您实际上可以在各种环境中应用所学,而不是现在学习Java EE 6,然后发现您可能无法使用所学的大部分内容。

没有一本书可以教你所需要知道的一切。例如,Servlets是一个很好的基础,但对于大于几页或端点的任何内容,您都将想要使用许多第三方框架或JSF,而且没有一本书涵盖了核心和上面的框架。

Java EE 5教程在奠定基础方面做得很好,我主要的抱怨是他们不向您展示源代码。相反,他们希望您只需下载并运行它。这在教程中没有讨论过。我发现Head First系列的书籍非常不错。

对于Web编程,原始的Servlets足够重要,只要理解请求/响应周期即可,但您不需要深入了解就可以跳到第三方框架。

我非常喜欢Stripes作为Action框架(与组件框架相比),单独的Stripes书籍非常出色(选择它是一个容易的选择)。

我不能建议组件框架的书籍,我实际上不推荐立即阅读。组件框架真正隐藏了HTTP核心请求/响应结构。他们之所以隐藏它们,是有原因的,并且通过隐藏它们获得了价值,但我认为要有效,您需要尽早对这些概念有一个扎实的理解。这就是为什么我不建议首先学习组件框架。

JAX-RS REST框架包含在Java EE 6中,但可轻松安装在Java EE 5或任何Servlet容器中。可以说它是Servlet 3.0应该具备的功能。但我不知道有关它的任何书籍。


2
问题是当您准备投入生产时,应用服务器的状态如何。如果一个给定的项目从现在起需要6个月时间,Oracle和JBoss很可能拥有符合JEE6标准的服务器,而Resin很可能有一个符合JEE6 Web Profile的服务器。 - Thorbjørn Ravn Andersen
JBoss计划在12月份发布。Oracle保持低调。Resin对其Web Profile实现保持沉默。Geronimo将在3.0(beta)版本中采用Web Profile。Glassfish已经发布了3.0.1版本,非常不错。 - Thorbjørn Ravn Andersen

4
对于Tomcat,可以在其网站上阅读手册,非常好。特别是关于Web应用程序组织和部署的前几章以及Servlets API和JSP的章节。
对于Spring,Manning的《Spring实战》是非常好的。同样对于Hibernate(Manning书籍),但我认为Hibernate大多数情况下超出了Web应用程序的范围。不过这取决于你自己。
Wicket - 也是Manning的书。但实际上,只需使用JavaScript编写前端代码即可。在我看来,这会更加容易。

3

我不会评论其他技术,但如果你想学习Hibernate,可以购买Cameron McKenzie的《Hibernate Made Easy》(www.hiberbook.com)。这本书物有所值,你可以在两天内完成阅读(真的)。它就像一部小说,最终你会发现自己像半专业人士一样处理Hibernate。


3

Jpassion提供了很好的视频和材料,可以学习Java EE 6和其他相关内容。

您也可以查看以下应用示例:

  1. Petstore。需要Maven,推荐使用Glassfish。由Antonio Goncalves编写,他还写了上述书籍
  2. JBoss Ticketmonster。需要Maven和Jboss Forge。在Jboss中部署。

2
如果你只想在Java中创建Web应用程序,请查看Play Framework。它类似于“Ruby on Rails”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接