7

在过去的 2 年里,我一直在 tomcat 上使用 java + spring,我的应用程序变得非常庞大。现在启动时间几乎是 3 分钟,在开发过程中会消耗大量资源。

所以我对如何让开发软件再次变得有趣的想法很感兴趣。我查看了 Spring DM/Gemini 蓝图以使其成为模块化,但体验并不方便。

现在即将添加更多模块,考虑开发另一个 Web 应用程序并使用 Spring 集成进行消息传递。显然,在一台台式电脑上开发它会是一个非常痛苦的经历。

有人有云开发经验吗?我如何改进所有这些时间和资源消耗的任务?云端开发对我有帮助吗?

4

2 回答 2

8

首先,解决瓶颈问题。随着他们的成长,他们倾向于潜入项目。最初的设计为了满足疯狂的最后期限而一次又一次地被妥协,现在臃肿已经扼杀了一个曾经活跃的应用程序。

不要猜测问题,而是使用真实数据来确定是什么让您的应用程序变慢。使用诸如 jProfiler 之类的分析器:http ://www.ej-technologies.com/products/jprofiler/overview.html

接下来,使用您所学的知识来提高新模块的效率。最重要的是,改变技术并不是万能的,因为所有技术都可能出现瓶颈。您必须找到问题背后的原因并解决它。

一旦解决了瓶颈,您就可以针对一项新技术创建一些测试项目,看看它是否更快、更容易,是否能满足您的需求。但是,只需解决当前堆栈上的问题即可。

于 2012-09-18T03:26:53.530 回答
8

这是典型的 java+spring web 应用程序的常见问题。随着年龄的增长,它们开始变得臃肿,上下文加载开始变得痛苦。我可以提出一些建议来缓解这个问题,但只有你才能根据你的应用程序中的具体情况做出最适合你的判断。

  1. 在进行开发时不要严重依赖服务器。编写单元测试并在 servlet 容器外运行它们。Spring对此有很好的支持。

  2. 在 Rest/Soap Web 服务中拆分您的业务逻辑(审慎而谨慎地)。这使您可以自由地开发和测试独立于核心业务逻辑的 UI。

  3. 如果使用 maven/gradle,请尝试 jetty 插件。它可以继续扫描更改并自动重新加载webapp(我认为tomcat插件也可以这样做)。它能够在重启之间存储会话,因此您不会受到重启的影响。请参阅此了解更多详细信息如何加快 Maven 和 Netbeans

  4. [付费选项] 可以试试 JRebel。

  5. 使用持续集成/测试/部署您的应用程序的 CI 服务器,减轻您的开发人员机器的一些负担。

于 2012-09-18T03:31:19.197 回答