今天突然想到一個(gè)問題:如果整個(gè)項(xiàng)目中用的是jdk1.7,那么通過maven依賴的jar包,它們使用的jdk版本是什么呢? 于是我隨意打開了項(xiàng)目中的一個(gè)類,點(diǎn)進(jìn)了這個(gè)類中引用的slf4j的jar包里,發(fā)現(xiàn)jar包中的META-INF文件夾中有一個(gè)MANIFEST.MF文件:

這里寫明了jar包被編譯的版本,因?yàn)閖ar包包含的都是.class文件,所以已經(jīng)提前編譯過了。
至于如何下到被與項(xiàng)目中使用的一致的jdk版本編譯的jar包,以及jar包分別被1.6 1.7 1.8版本的jdk編譯,運(yùn)行在1.8版本的jvm哪個(gè)性能更好,仍需要進(jìn)一步的研究- -
書接上文,請(qǐng)教了一個(gè)大神,大神說, 第一個(gè)問題,如果你想用1.7編譯這個(gè)jar包,需要下到他的源碼,然后自己構(gòu)建這個(gè)項(xiàng)目,生成jar包,然后上傳到私服,其他同事也就可以用了。 于是我就下到了源碼,maven clean install -Dmaven.test.skip=true編譯了兩次,都失敗了… 大神說可能是這個(gè)項(xiàng)目的jar包依賴下載不成功,有可能是網(wǎng)絡(luò)的原因,有可能是這個(gè)jar包放在了人家公司的私服上,沒有在公網(wǎng)中(http://search.maven.org/) 。
也就是說如果一個(gè)jar包用的1.6編譯的,那么一個(gè)運(yùn)行在1.5上的項(xiàng)目肯定是無法使用這個(gè)jar的。另外現(xiàn)在有些框架只支持jdk1.8,也就是說這個(gè)框架使用的jdk1.8編譯的,搞不好也是用1.8寫的源碼。
第二個(gè)問題,大神說性能基本差不多,1.8在構(gòu)建時(shí)候 生成的字節(jié)碼有的地方有優(yōu)化,這個(gè)肯定是多少有點(diǎn)優(yōu)化的?;炯嫒?,每次jdk升級(jí)不都是說有性能的提升嗎,他們的提升主要是靠生成字節(jié)碼的質(zhì)量,性能提升肯定不大 但多少有點(diǎn)小提升 可能提升千分之一。
恩 ~
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注