我正在开发我的第一个Java Web应用程序(Spring / Hibernate / Freemarker),我唯一关心的是开发速度。
我以前用PHP开发,只需重新加载浏览器即可查看结果。使用Java,我需要始终单击IDE中的“更新资源”,以查看对模板所做的更改。在我看来,这种开发方式效率非常低,因为重新部署需要几秒钟。
另外,我不是准备模板的人 - 它只是一个图形人,他也想测试它们。他是否需要拥有自己的应用程序服务器并继续重新部署应用程序,还是需要更多“PHP”方式来“重新加载”页面?
答案 0 :(得分:6)
是的,与动态语言和PHP或Rails等平台相比,开发速度是一个主要的问题和缺点。显然Java在不同领域获胜,但这里有一些提示:
首选单元测试进行重新部署 - 如果您对单元测试感到满意,则可以大大减少重新部署的数量。一旦完成,我发现自己只部署了一次完整的功能。所有逻辑都已经过测试,所以我不必一次又一次地部署,浪费几秒钟或几分钟。
当我开始使用GUI时,我不必回到后端,因为我现在可以工作了。一旦我看到重复的重新部署,我会尝试使用JUnit来测试它。
使用更好的框架。 Spring MVC是非常保守的,虽然非常好并且纯。我听说Play! framework可以通过动态重新编译类来缩短周转时间。
另一方面,像Grails这样的现代JVM框架可以加速您的开发,因为它们可以为您创建域,CRUD和GUI。
一些框架促进松散耦合模板。如果您使用的是Freemarker或纯JSP,则很难在GUI上单独工作。但是像Wicket这样的框架在很大程度上解耦了用纯HTML编写的模板的Java代码。此外,我目前正在开发一个仅提供静态HTML的应用程序,并通过AJAX / REST服务和JavaScript更新动态内容。
考虑购买JRebel并查看JVM中内置的热插拔功能。有时更改代码并不意味着重新部署。
IntelliJ IDEA可以在窗口变为后台时动态更新修改后的资源(HTML,JavaScript)。这意味着当您将窗口从IDE切换到浏览器时,您的资源就会更新。可能其他IDE也可以这样做。
答案 1 :(得分:2)
您可以自定义IDE以自动更新部署。对网页的更改实际上并不需要重新部署应用程序,因为Java服务器会即时更新它们。关于第二个问题 - 您可以在多台计算机上创建一些常见安装,并自定义将新页面复制到部署的IDE(或编写脚本)。
答案 2 :(得分:1)
您可能需要查看Play framework,它可以让您更新代码(HTML,CSS,Java),并在浏览器中按下刷新按钮后立即查看结果,需要重新部署您的应用程序。