如何提高调试模式下的Vaadin启动速度?

如何提高调试模式下的Vaadin启动速度?,vaadin,Vaadin,当我为Vaadin创建一个简单的hello world应用程序,将其部署到服务器,并在浏览器中键入应用程序URL时,我需要等待大约5-10秒,应用程序才会出现。下一次运行很快,但当我重新部署或热插拔类时,我不得不再次等待。当我将它添加到数据库启动时间、服务器启动时间等中时,它花费的时间太长 有没有办法消除瓦丁启动缓慢的现象?这一点很重要,因为每一个额外的慢度都会使modify+run+test编程周期变得更加令人沮丧——并非所有代码都可以进行单元测试,测试某些东西的唯一方法是手动modify+r

当我为Vaadin创建一个简单的hello world应用程序,将其部署到服务器,并在浏览器中键入应用程序URL时,我需要等待大约5-10秒,应用程序才会出现。下一次运行很快,但当我重新部署或热插拔类时,我不得不再次等待。当我将它添加到数据库启动时间、服务器启动时间等中时,它花费的时间太长

有没有办法消除瓦丁启动缓慢的现象?这一点很重要,因为每一个额外的慢度都会使modify+run+test编程周期变得更加令人沮丧——并非所有代码都可以进行单元测试,测试某些东西的唯一方法是手动modify+run+test

GWT调试模式也存在类似的问题。因为Vaadin基于GWT,所以这种缓慢的原因可能不是Vaadin,而是GWT


我的环境:IntelliJ 9+Tomcat 6+Windows 7 64位+fast Core 2 Duo

问题是由第一次加载所有Java类引起的,后续调用可以使用缓存的类


然而,5-10秒并没有那么糟糕,我经历了更糟糕的情况。

如果重新启动Vaadin应用程序时速度很慢:检查application.init方法是否没有造成太大的负担-数据库连接、加载大量数据等。 您可以使用URL参数?restartApplication在Vaadin中强制重新启动此会话


如果热部署很慢,即使应用程序没有重新启动,UI状态仍然存在:这与Vaadin的客户端GWT部分有关。可能是缓存被完全忽略了。Widgetset优化可能会有所帮助。

瓦丁大部分时间都在这里 com.vaadin.terminal.gwt.server.abstractApplicationsServletServeStaticResourcesInvaadin 实际上是servlet容器,而不是vaadin本身

我想是因为vaadin.jar太大了

因此,只需将VAADIN dir从VAADIN.jar提取到webRoot,应用程序启动时间就会减少


另一个非常好但付费的解决方案是

5-10秒在一个只有大约30个Vaadin类的小应用程序中。我猜当代码库增长时,它只会变慢。在这两种情况下,重启都很慢。即使使用简单的“hello world”应用程序,也很慢,Application.init中没有任何代码