国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

加速Java應用開發2—加速項目調試啟動速度

開發 后端
本文介紹關于熱部署/熱替換。之前也有很多人介紹過這些知識,不過比較分散,我寫此篇的目的是聚合它們。本文以HotSpot虛擬機為例。

上一篇Spring/Hibernate提升速度的文章《加速spring/hibernate應用調試時啟動速度》,主要是通過一些技巧來提升啟動速度,還是做不到如類的熱部署/熱替換。因此再寫一篇關于熱部署/熱替換的文章。之前也有很多人介紹過這些知識,不過比較分散,我寫此篇的目的是聚合它們。本文以HotSpot虛擬機為例。

首先讓我們來看兩個概念:熱部署、熱替換

熱部署

即在容器運行過程中,重新加載類或重新加載整個項目。常見的解決方案就是使用自定義ClassLoader;

部分加載的示例:如JSP、Play框架;

重新加載整個項目的示例:如Tomcat、Jetty;默認都是定期檢測class文件是否有修改,如果有,先卸載當前容器,再重新加載整個項目(reload)。

這種情況缺點很明顯:只能重新裝載整個類/整個項目,不能只替換類中的部分。

JSP熱部署的介紹:

http://www.linuxidc.com/Linux/2013-05/83816.htm

Tomcat熱部署的介紹:

http://www.94it.cn/a/jingxuanboke/2013/0501/4578.html

Play!框架:

http://mingj.iteye.com/blog/307238

熱替換

熱替換相對于之前的熱部署的優勢就是可以替換如方法體、增刪方法/字段等類內部局部替換,而不是整個類。常見的實現方式:HotSpot虛擬機的HotSwap、HotSwap補丁、

HotSwap

只能熱替換方法體。只要在eclipse或idea等開發工具中開啟debug模式即可使用。

HotSwap補丁 DCEVM

該補丁增強了HotSwap,可以增加、刪除類字段、方法和改變類的父類。也必須在debug模式下調試。具體使用可以參考如下文章,在此就不重復了

hotswap 用戶手冊

DCE使用的問題及其解決方法

我測試時使用的是jdk1.6.0_25,沒有問題,不支持jdk1.6.0_26,且我測試jdk7_13和jdk7_21沒成功。官網介紹說其是基于JDK7-b102編譯的。估計我下的這兩個版本不對。

java agent + Instrumentation

1、Spring-Loaded

SpringSource官網發布的,用在Grails 2中,允許:添加/修改/刪除 方法/字段/構造器。類型/方法/字段/構造器上的注解也允許修改,且也可以新增/刪除/修改enum類型的值。

使用方式:

  1. -javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify 

如在執行tomcat/jetty時的VM參數中指定如上配置即可。無需在debug模式下執行。如果使用的是如idea可以按Ctrl+Shift+F9編譯當前類/Ctrl+F9編譯所有更改的類。

2、Fakereplace 

類似于Spring-Loaded,具體可參考其官網:

https://github.com/fakereplace/fakereplace 

https://github.com/fakereplace/fakereplace/wiki/How-It-Works

它的好處是,支持一些框架:

  • Seam 2
  • Weld (基本集成)
  • JSF
  • Metawidget
  • Hibernate (實際是如果實體修改了,重啟整個EMF,也不是很快)
  • Resteasy

具體使用也是在VM參數中指定:

  1. -javaagent:/path/to/fakereplace.jar  

可以到如下地址下載jar包,或自己編譯

http://repo.grails.org/grails/plugins-releases/org/fakereplace/fakereplace-dist/1.0.0.Alpha2/

其提供了一些配置,如:

  1. -javaagent:/path/to/fakereplace.jar=packages=com.mycompany.myclasses,log=trace   
  • packages 需要熱替換的包
  • log 可選,支持trace,debug,info,error
  • index-file fakereplace索引為的路徑。Fakereplace在第一次運行后存儲這個文件以加速啟動
  • dump-dir 當熱替換時,Dump類到這個目錄,僅當開發Fakereplace時有用
  • port Fakereplace監聽的端口

它倆的實現很類似,Spring-Loaded使用了CGLIB來實現代理,FakeReplace使用了Javassist來實現的。

還有如Agent Smith,不過N久沒維護了。 其實Play框架也是使用了Instrumentation,但是它是整個替換,所以沒有歸類過來。

以上的都有個缺點:如我在寫spring項目時,無法動態加載如@RequestMapping配置,或動態加載配置文件。這些在強大的JRebel中都是支持的。

JRebel

JRebel是我目前簡單的最強大的熱替換/熱部署工具。但缺點是收費的,而且不便宜。之前介紹的都是免費的。首先大家可以看一下它支持的特性與JVM Hot Swap對比列表:

​#p#

JavaEE支持 JRebel JVM Hot Swap
裝載時間 <1s <1s
內存泄漏
改變類結構
 改變方法體  
[[76460]]
 
 
[[76460]]
 
添加/刪除方法  [[76460]]  [[76461]]
添加/刪除構造器  [[76460]]  [[76461]]
添加/刪除字段  [[76460]]  [[76461]]
 添加/刪除類  [[76460]]  [[76461]]
 添加/刪除注解  [[76460]]  [[76461]]
改變靜態字段值   [[76460]]  [[76461]]
添加/刪除enum值   [[76460]]  [[76461]]
改變接口   [[76460]]  [[76461]]
替換父類   [[76460]]  [[76461]]
添加/刪除實現的接口  [[76460]]   [[76461]]
即時構建  
跳過WAR目錄的構建  [[76460]]  [[76461]]
跳過.WAR/.EAR類更新構建  [[76460]]  [[76461]]
跳過.WAR/.EAR資源更新構建  [[76460]]  [[76461]]
映射多個source目錄到一個.WAR/.EAR目標目錄  [[76460]]  [[76461]]
使用include/exclude模式映射類和資源 [[76460]] [[76461]]
使用Ant風格模式映射多個sourcde目錄 [[76460]] [[76461]]
使用系統屬性使映射機器無關 [[76460]] [[76461]]
Maven插件 [[76460]] [[76461]]
遠程/云
通過HTTP進行應用更新 [[76460]] [[76461]]

JavaEE支持

JSP EL changes
JSP Scriptlet changes
EJB 1.x session bean interface changes
EJB 2.x session bean interface changes
EJB 3.x session bean interface changes
EJB 3.x: adding new EJB
EJB 3.x: adding new EJB reference
JSF changes (Mojarra)
Bean Validation support (Hibernate Validator)
JAXB annotation changes
JAX-RS changes (RESTEasy, Jersey, CXF)
JAX-WS support (Metro, CXF)
JPA changes (Hibernate, EclipseLink, TopLink, OpenJPA)

CDI changes (Weld)

框架支持
Spring Framework 2.x or later
Hibernate
JBoss Seam 2.x or later
Google Guice
Struts 1.x, 2.x
Wicket
Stripes 1.5 or later
查看完整的框架支持列表

代理支持

CgLib
Javassist

OSGi支持

Apache Felix
Eclipse Equinox

從如上列表看到其不是一般的強大。

接下來看看如何使用(以IDEA為例):

#p#

1、首先點擊如下圖所示的運行,然后點擊Edit Configuration...

2、在彈出的窗口中輸入如下圖所示的jrebel.jar位置

 類似于之前的javaagent配置。

3、啟動后,當修改類后,請按Ctrl+F9重新編譯。然后再執行程序即可看到變化。

4、Eclipse內嵌tomcat的配置:

使用起來是非常簡單的。注意:如果使用web容器如tomcat、jetty,請禁用其reload,如jetty,可以配置

<scanIntervalSeconds>0</scanIntervalSeconds> 或者 <reload>manual</reload>。

JRebel也提供如Eclipse、IDEA、Maven插件,其實沒必要上插件,直接配javaagent就很簡單。還可以配置

如果有朋友想開啟/禁用某些框架/JavaEE的支持,可以通過添加VM參數,如下所示開啟/關閉:

   -Drebel.spring_plugin=true
   -Drebel.aspectj_plugin=true
   -Drebel.struts2_plugin=true
   -Drebel.hibernate_plugin=true
   -Drebel.jackson_plugin=true
   -Drebel.log4j-plugin=true

完整的框架支持列表

還可以通過配置一個rebel.xml來進行選擇性構建:

http://zeroturnaround.com/software/jrebel/how-to-configure-rebel-xml/

更多配置請參考其官方的JRebel手冊

到此就介紹完了我見到的所有熱部署/熱替換實現方式,大家還有什么好的方式歡迎補充。

原文鏈接:http://jinnianshilongnian.iteye.com/blog/1887788

責任編輯:陳四芳 來源: 開濤的博客
相關推薦

2013-07-01 10:07:44

JavaSpringHibernate

2013-07-04 13:19:24

Java開發速度

2012-02-08 15:06:31

ibmdw

2009-09-24 17:21:17

加速Hibernate

2013-07-03 10:20:06

2010-05-05 17:19:55

云計算

2017-06-14 09:00:40

容器開發人員云應用

2018-09-11 09:00:50

工具開發應用程序

2009-08-21 15:40:26

Linux KerneLinux開發加速

2009-06-29 10:34:49

網站加速Page SpeedGoogle

2020-09-02 07:20:48

KubernetesJava應用程序容器

2011-05-05 15:36:25

深信服廣域網加速

2024-06-20 09:00:31

2019-05-20 11:35:00

AWS出海加速營亞馬遜

2019-09-02 08:58:27

Python編譯器編程語言

2025-04-02 10:06:00

2010-11-04 13:08:48

Apache加速模塊

2013-07-04 13:37:23

Java開發速度

2021-05-17 10:42:18

云計算SaaS開源
點贊
收藏

51CTO技術棧公眾號

一区二区视频在线看| 欧美韩日亚洲| 97婷婷大伊香蕉精品视频| 欧美精品一区二区三区在线播放| 日韩毛片精品高清免费| 不卡的av网站| 国产99久久久国产精品| 国产在线精品一区二区夜色| 国产成人精品亚洲线观看| 蜜桃视频在线观看www社区| 蜜桃特黄a∨片免费观看| 成人毛片一区二区| 国精产品一区一区三区有限在线| 欧美精品视频www在线观看| 美腿丝袜亚洲综合| 丁香综合av| 小草av在线播放| 久久成人免费观看| 午夜精品视频在线观看一区二区| 一区二区日韩精品| 亚洲国产美女精品久久久久∴| 欧美日韩亚洲系列| 91国偷自产一区二区开放时间| 一区二区三区视频在线看| 亚洲同性同志一二三专区| 国产最新精品免费| 国产福利91精品一区二区三区| 午夜精品毛片| 国产日韩另类视频一区| 高清一区在线观看| 成人中文字幕+乱码+中文字幕| 亚洲国产第一页| 国产成人免费精品| 亚洲成色www.777999| 国产精品爽黄69| 欧美久久久影院| 成人永久aaa| 国内精品久久久久久99蜜桃| 麻豆网在线观看| 狠狠干 狠狠操| 国产精品一区二区久久| 精品蜜桃在线看| 中文字幕国产一区| 亚洲欧洲视频| 综合久久伊人| 极品白浆推特女神在线观看| 国产精品国三级国产av| 国产精品免费久久久久久| 亚洲精品一线二线三线无人区| 日本一区二区三区视频视频| 亚洲精品久久| 国产第一精品| 深夜福利在线视频| 女人色极品影院| 国产一区二区香蕉| 一区二区三区高清国产| 色综合天天做天天爱| 成人免费毛片片v| 91成人影院| 成人午夜一级| sese一区| 婷婷免费在线观看| 日本中文不卡| 国产精品99久久久久久久久 | 熟女少妇在线视频播放| 成人xxxx视频| 久久精品电影一区二区| 欧美日本视频在线| 成人免费一区二区三区在线观看| 日本伊人色综合网| 国产精品免费不| 欧美色网一区| 牛牛热在线视频| 色综合久久九月婷婷色综合| 欧美精品第一页在线播放| 国产精品中文字幕久久久| 国产成人无码精品久久久性色| 动漫av一区| 国产专区在线| 中文久久久久久| 精品国产1区2区| 日本大片在线观看| 97在线国产视频| 高清av免费一区中文字幕| 欧美理论电影在线播放| 日韩欧美不卡一区| 91精品入口蜜桃| 婷婷视频在线播放| 亚洲男人都懂的网站| 久久er精品视频| 在线日韩网站| 成人自拍视频网| 午夜免费福利在线观看| 亚洲一区中文在线| 欧美激情一区二区三区在线视频| aaa在线播放视频| 老牛国产精品一区的观看方式| 91黄视频在线观看| 欧美中文字幕精品| 亚洲a区在线视频| 成人在线观看你懂的| p色视频免费在线观看| 欧美美乳视频| 欧美日韩午夜在线| 亚洲国产精品一区二区第四页av| 亚洲妇女成熟| 国产精品色婷婷久久58| 日本sm极度另类视频| 国外av网站| 香蕉久久a毛片| 一区二区国产精品视频| 欧美美乳视频网站在线观看| 风间由美一区| 午夜在线一区二区| 精品日韩av一区二区| 欧美资源一区| 美女福利一区二区| 成人综合在线视频| 欧美高清视频一区二区| 午夜欧美性电影| 中日韩高清电影网| 在线欧美一区二区| 国产精品99久久久久久久女警 | 亚洲精品国产精品国自产在线| 欧美无乱码久久久免费午夜一区| 亚洲国产欧美另类丝袜| 亚洲欧美福利一区二区| 综合中文字幕亚洲| 亚洲日本在线天堂| 伊人天天综合| 欧美日一区二区在线观看 | 91av网站在线播放| 国内精品久久久| 久久天天躁日日躁| 久热爱精品视频线路一| 少妇高潮久久77777| 久久精品国亚洲| 国内精品国产三级国产在线专| 欧美国产日韩一区二区| 97国产一区二区精品久久呦| 68精品国产免费久久久久久婷婷| 庆余年2免费日韩剧观看大牛| 国产精品久久久久秋霞鲁丝 | 国产精品看片资源| 色视频在线观看| 精品一区在线看| 欧美高清视频一区| 欧美精品国产| 精品国内自产拍在线观看视频| 老司机午夜网站| 亚洲老妇激情| 99ri日韩精品视频| 午夜a一级毛片亚洲欧洲| 国产精品美女久久久久久不卡| 精品国产1区| 午夜国产欧美理论在线播放| 伊人久久综合| 免费观看一级特黄欧美大片| 国产不卡视频在线播放| 日本一区二区三区在线不卡| 亚洲免费观看高清| 91精品福利视频| 欧美mv和日韩mv的网站| 亚洲黄一区二区| 日韩视频精品在线| 青青精品视频播放| 成人免费观看网站| 亚洲午夜高清视频| 精品国产一二三四区| 欧美wwwwwww| 日韩有码电影| 国产蜜臀av在线播放| 欧美一区二区三区婷婷| 五月综合久久| 一区二区三区福利| 成熟亚洲日本毛茸茸凸凹| 国产精品久久久久久福利一牛影视| 亚洲国产欧美日韩另类综合| 欧美猛男男办公室激情| 国产一区二区日韩| 91高潮在线观看| 国产精品免费观看高清| 免费成人深夜夜行网站视频| 尤蜜粉嫩av国产一区二区三区| 尤物视频在线观看| www视频在线观看| 国产精品网在线观看| 激情成人亚洲| bt7086福利一区国产| 五月婷婷欧美视频| 亚洲大胆人体视频| 26uuu久久噜噜噜噜| 久久精品一二三区| 成人在线观看黄| 69av在线| 亚洲精品在线播放| 激情六月综合| 国产亚洲婷婷免费| 91精品国产色综合久久| 久久亚洲国产精品成人av秋霞|