构建端到端 Web 应用程序所需的技术?
我想开发一个网络应用程序,例如在线调度程序。 (是的,我知道这已经被做过一百万次了。) 我的大部分经验都是在 Java 方面的,所以我想在考虑技术时利用它。
我主要是一名系统开发人员,很少接触 UI 编程,所以我认为这是我需要进行大部分学习的地方。
您对我应该关注的技术有什么建议吗? 我想专注于适销对路且易于学习的技术。
到目前为止,我认为我需要一个 3 层架构(从头开始):
- 数据库(可能是 MySQL 或 PostgreSQL) - SQL、JDBC
- 后端服务器 - Java
- Web 服务器(Tomcat) - JSP、Servlet
- Web 框架 - Tapestry(这方面很弱,有更好的选择吗?)
- 浏览器技术 - HTML、Javascript、CSS(需要学习)
我听说过“富互联网应用程序”开发工具,例如 Flex 和 Silverlight,但我不确定此类技术的市场。
编辑:似乎有很多提到 Spring/Hibernate,所以我会研究一下。 我很感激您的反馈。
I want to develop a web application, like an online scheduler. (Yes I know it's been done a million times.)
Most of my experience is in Java, so I want to leverage that when considering technologies.
I've primarily been a systems developer with little exposure to UI programming, so I think this is where I will need to do most of my learning.
Do you have any suggestions on the technologies I should focus on? I want to focus on technologies that are marketable and easy to learn.
So far this is what I think I need for a 3-tier architecture (from the ground up):
- Database (likely MySQL or PostgreSQL) - SQL, JDBC
- Back end server - Java
- Web server (Tomcat) - JSP, Servlets
- Web Framework - Tapestry (weak on this, any better alternatives?)
- Browser technologies - HTML, Javascript, CSS (need to learn)
I've heard about "Rich internet application" development tools such as Flex and Silverlight, but I'm not sure about the market for such technologies.
Edit: Seems like there's a lot of mention of Spring/Hibernate, so I'll look into that. I appreciate the feedback.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我认为你已经很好地掌握了你的基础。
您可能需要研究一些框架/库以使其更轻松。
Web 框架 - Wicket / Stripes / JSF / Tapestry(组件与基于请求的框架)
Javascript 库 - JQuery / YUI / Dojo
至于您的模板语言,您可以使用 JSP / Velocity / Freemarker。
只需研究框架和工具,也许可以尝试一些,看看哪些最适合您。
仅供参考,我目前正在使用。
I think you've got your bases covered pretty well.
You'll probably want to look into some frameworks / libraries to make it easier on you.
Web Framework - Wicket / Stripes / JSF / Tapestry (component vs request based frameworks)
Javascript Library - JQuery / YUI / Dojo
As for your template language you could use JSP / Velocity / Freemarker.
Just study up on the frameworks and tools maybe try a few out and see which ones work best for you.
Just FYI I'm currently using.
我个人会将 Spring 添加到此列表中。 依赖注入绝对是一项值得学习的伟大技术,根据我的经验,Spring 让您可以根据需要尽可能多地或尽可能少地使用它。
您没有明确提到单元测试,但这肯定应该是混合的一部分 - 我在 JUnit< 之外没有太多经验/a> 作为实际的测试框架,但还有 EasyMock 和 JMock (以及其他)用于模拟依赖项。
这些都不是特定于网络的,但在我看来仍然很重要:)
I'd personally add Spring to this list. Dependency injection is definitely a great technology to learn, and Spring lets you use it as much or as little as you like, in my experience.
You haven't explicitly mentioned unit testing, but that should certainly be part of the mix - I don't have much experience outside JUnit as an actual testing framework, but there's also EasyMock and JMock (amongst others) for mocking of dependencies.
None of that's web-specific, but still important stuff IMO :)
我不同意富互联网应用程序没有市场的说法。 事实上,将企业级应用程序制作为 RIA 的趋势正在不断增长。 RIA 相对于普通 Web 应用程序的优势在于可用性。 您可以获得 Web 应用程序的所有优势,但仍然能够保留类似桌面的用户界面。
您说您有 Java 背景,并且没有太多 Web 技术经验。 嗯,我不得不说,您听起来确实是 GWT 或 IT Mill 工具包(基于 GWT)。 两者都是允许您纯粹用 Java 创建丰富的互联网应用程序的框架! 无需 HTML 或 JavaScript 技能。 您必须学习 CSS 才能为应用程序制作自己的主题。
这两个框架都是开源的,非常适合商业用途。 IT Mill Toolkit 与 GWT 的区别在于它是服务器驱动的,这意味着业务逻辑是在服务器上实现和运行的,而不是在客户端浏览器中作为 JavaScript 运行(GWT 就是这种情况)。 从软件安全的角度来看,这种服务器驱动的架构使应用程序更加安全。 GWT 相对于 IT Mill Toolkit 的优势在于拥有更大的用户社区。
说到 ORM 框架,Hibernate 非常流行。 然而,我不太喜欢它,因为尽管它在技术上实现了 Java Persistence API,但它并不总是按预期运行,并且您必须使用大量 hibernate 特定注释,这将您的应用程序与hibernate(坏事!),如果您愿意,您不能轻松地切换到另一个 JPA 提供商。 实现 JPA 的另一个 ORM 框架是 EclipseLink。 我个人还没有在企业级应用程序中使用过 EclipseLink(因为我还没有机会),但我正在将它用于一个较小的项目,而且它似乎相当不错。 EclipseLink 是开源的,其许可适合商业用途。 EclipseLink 是由 Oracle 持续开发的,因此它的背景很扎实。 它实际上是基于TopLink,这是Oracle的闭源JPA实现。
希望这可以帮助 :)
I would have to disagree that there isn't a market for Rich Internet Application. There is actually a growing trend in enterprise size applications being made as RIAs. The advantage with RIA over normal web applications is usability. You get all the advantages of web application but still are able to keep the desktop-like user interface.
You say you come from a Java background and haven't had much experience with web technologies. Well, I have to say that you really sound like an ideal user candidate for either GWT or IT Mill Toolkit (based on GWT). Both are frameworks which allow you to create rich internet applications purely in Java! No HTML or JavaScript skills required. You will have to learn CSS to make your own theme for the application.
Both the frameworks are open source and suite very well for commercial use. What separates IT Mill Toolkit from GWT, is that it is server driven, meaning business logic is implemented and ran on the server rather than as JavaScript in the client browser (which is the case with GWT). This server-driven architecture makes the application much safer from a software security point of view. The advantage of GWT over IT Mill Toolkit is the larger user community.
What comes to the ORM frameworks, Hibernate is quite popular. However, I'm not very fond of it, because even though it technically implements Java Persistence API, it doesn't always behave as expected and you'll have to use a lot of hibernate specific annotations, which ties your application pretty hard to hibernate (bad thing!) and you cannot just easily swich to another JPA provider if you'd like to. Antoher ORM framework implementing the JPA is EclipseLink. I haven't personally used EclipseLink in enterprise size applications (because I still haven't had the chance to), but I'm using it for a smaller project and it seems to be quite nice. EclipseLink is open source and its lisencing is friendly for commercial use. EclipseLink is continually developed by Oracle, so its backgrounds are solid. It is actually based on TopLink, which is Oracle's closed source JPA implementation.
Hope this helps :)
前段时间问过基本相同的问题,有一些非常有用的答案:
网站开发工具
Asked basically the same question some time ago, with some pretty useful answers:
Tools for website development
如果您要使用 Java 后端,我会为您的 JPA、JSF 推荐 Hibernate 以及 < a href="http://www.jboss.org/jbossrichfaces/" rel="nofollow noreferrer">RichFaces (AJAX/skinning) 和 Facelets(视图渲染/模板化)用于前端,以及 Seam 将它们放在一起。 这是一个美妙的组合。
If you are going the with a Java back-end, I would recommend Hibernate for your JPA, JSF with RichFaces (AJAX/skinning) and Facelets (view rendering/templating) for your front-end, and Seam to put it all together. It's a wonderful combination.
如果你使用 Spring,那么你可能只需使用 Hibernate 来连接 mysql,你就可以在那里拥有你需要的一切。
编写完它之后,您想要开始改进它,然后也许开始考虑在浏览器端做更多的事情,但是,最初,您可能只想让它没有 ajax 调用。
Spring 框架文档可能会有所帮助,因为您可以选择使用 Spring 的许多部分,例如 Spring MVC、Spring Framework、Spring Webflow 和 Spring Security(如果需要)。
If you go with Spring, then you may just use Hibernate going to mysql, and you can have everything you need there.
After you write it, and you want to start improving on it, then perhaps start looking at doing more on the browser side, but, initially, you may want to just have it be without ajax calls.
The Spring Framework documentation may be helpful, as there are many parts to Spring that you can use, optionally, such as Spring MVC, Spring Framework, Spring Webflow and Spring Security, if needed.