如何用java开发/部署大型企业应用程序

如何用java开发/部署大型企业应用程序,java,spring,tomcat,cloud,development-environment,Java,Spring,Tomcat,Cloud,Development Environment,在过去的两年里,我一直在tomcat上使用java+spring,我的应用程序变得非常庞大。现在启动时间几乎为3分钟,在开发过程中会消耗大量资源 因此,我对如何使开发软件再次变得有趣的想法很感兴趣。我看过SpringDM/GeminiBlueprint使其成为模块化的,但体验并不方便 现在将添加更多模块,考虑将其开发为另一个web应用程序,并使用Spring集成进行消息传递。显然,在一台台式计算机上开发它将是一次非常痛苦的经历 有人有云开发的经验吗?我如何改进所有这些耗费时间和资源的任务?云端开

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

因此,我对如何使开发软件再次变得有趣的想法很感兴趣。我看过SpringDM/GeminiBlueprint使其成为模块化的,但体验并不方便

现在将添加更多模块,考虑将其开发为另一个web应用程序,并使用Spring集成进行消息传递。显然,在一台台式计算机上开发它将是一次非常痛苦的经历


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

首先,解决瓶颈问题。随着项目的发展,他们有潜入项目的倾向。最初的设计一次又一次地被破坏,以满足疯狂的最后期限,现在膨胀已经扼杀了一个曾经活跃的应用程序

不要猜测问题,而是使用真实数据来确定是什么让你的应用程序运行缓慢。使用探查器,如jProfiler:

接下来,利用所学知识使新模块更高效。底线是,改变技术并不是解决所有问题,因为所有技术都可能出现瓶颈。您必须找到问题背后的原因并加以解决


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

这是典型java+SpringWeb应用程序的常见问题。随着年龄的增长,他们开始变得臃肿,上下文加载开始变得痛苦。我可以提出一些建议来缓解这个问题,但只有你才能根据你的应用程序中到底发生了什么来判断最适合你

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

  • 在Rest/SOAPWeb服务中拆分业务逻辑(明智而谨慎)。这使您可以独立于核心业务逻辑开发和测试UI

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

  • [付费选项]可以尝试JRebel

  • 使用持续集成/测试/部署应用程序的CI server,减轻开发者机器上的一些负担


  • 实际问题是否与缩短开发机器上运行tomcat的部署时间有关?您研究过jRebel吗?谢谢您的评论,但我认为剖析器更多地与生产性能有关,而不是与开发启动有关(这是我最初想问的问题)?谢谢!你的答案是我一直在寻找的。我对CI服务器特别感兴趣。因此,我们将开发另外两个独立的spring应用程序。CI server将使我免于在本地计算机上运行两个并行应用程序的痛苦(由于资源限制,仍然有可能无法成功运行)?我很高兴它起到了作用。当您具有良好的测试覆盖率时,CI服务器将真正发挥作用。CI server可以继续将应用程序部署到开发服务器,并且在本地计算机上开发时,您可以在访问其他应用程序提供的功能时指向公共开发服务器,因此您只需在本地运行一个应用程序。