日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

如何在单个API中支持Java 6、8、9

發(fā)布時(shí)間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在单个API中支持Java 6、8、9 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

借助jOOQ 3.7,我們終于添加了對Java 8功能的正式支持。 這為許多不錯(cuò)的改進(jìn)打開了大門,例如:

創(chuàng)建結(jié)果流

try (Stream<Record2<String, String>> stream =DSL.using(configuration).select(FIRST_NAME, LAST_NAME).from(PERSON).stream()) {List<String> people =stream.map(p -> p.value1() + " " + p.value2()).collect(Collectors.toList()); }

異步調(diào)用語句(jOOQ 3.8+)

CompletionStage<Record> result = DSL.using(configuration).select(...).from(COMPLEX_TABLE).fetchAsync();result.thenComposing(r -> ...);

但是顯然,我們不想讓那些因使用較舊的應(yīng)用程序服務(wù)器而受Java 6困擾的付費(fèi)客戶感到失望。

如何在單個(gè)API中支持多個(gè)Java版本

這就是為什么我們繼續(xù)為商業(yè)客戶發(fā)布Java 6版本的jOOQ 。 我們是怎么做的? 非常簡單地。 我們的商業(yè)代碼庫(這是我們的主要代碼庫)包含大量的“標(biāo)志”,如以下示例所示:

public interface Query extends QueryPart, Attachable /* [java-8] */, AutoCloseable /* [/java-8] */ {int execute() throws DataAccessException;/* [java-8] */CompletionStage<Integer> executeAsync();CompletionStage<Integer> executeAsync(Executor executor);/* [/java-8] */}

(當(dāng)然, AutoCloseable在Java 7中已經(jīng)可用,但是我們沒有Java 7版本)。

構(gòu)建jOOQ時(shí),在使用預(yù)處理器從源文件中剝離邏輯之后,我們對其進(jìn)行了多次構(gòu)建:

  • 商業(yè)Java 8版本是按原樣構(gòu)建的
  • 通過剝離[java-8]和[/java-8]標(biāo)記之間的所有代碼,構(gòu)建第二個(gè)商業(yè)Java 6版本
  • 通過向商業(yè)版本添加一些代碼來構(gòu)建商業(yè)免費(fèi)試用版。
  • 通過剝離[pro]和[/pro]標(biāo)記之間的所有代碼,構(gòu)建了第三個(gè)開源版本

這種方法的優(yōu)點(diǎn)

與其他方法相比,此方法有幾個(gè)優(yōu)點(diǎn):

  • 我們只有一個(gè)真理來源,即原始的商業(yè)源代碼。
  • 所有不同版本中的行號均相同
  • 這些API在一定程度上是兼容的
  • 通過類加載或反射不會涉及任何魔術(shù)

缺點(diǎn)是:

  • 提交到存儲庫要慢一些,因?yàn)槲覀冇袔讉€(gè)存儲庫。
  • 發(fā)布版本需要更長的時(shí)間,因?yàn)樾枰獦?gòu)建不同的版本并多次測試集成
  • 有時(shí),我們只是忘了添加一個(gè)標(biāo)記,而當(dāng)每晚Java-6構(gòu)建崩潰時(shí),我們不得不重新構(gòu)建
  • 我們?nèi)匀粺o法在Java 6版本中包含的普通代碼中使用lambda表達(dá)式(大多數(shù)代碼)

我們認(rèn)為,優(yōu)勢明顯勝過。 只要我們的客戶能夠,并且只要那些仍舊使用舊版本的客戶仍然能夠升級到最新的jOOQ版本,就可以實(shí)現(xiàn)一流的Java功能就可以了。

我們期待在不影響現(xiàn)有用戶的情況下支持JDK 9功能,例如模塊化和新的Flow API 。

你呢?

您如何實(shí)現(xiàn)跨JDK版本的兼容性?

翻譯自: https://www.javacodegeeks.com/2016/03/support-java-6-8-9-single-api.html

總結(jié)

以上是生活随笔為你收集整理的如何在单个API中支持Java 6、8、9的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。