java8返回单个号码_如何在单个API中支持Java 6、8、9
java8返回單個號碼
借助jOOQ 3.7,我們終于添加了對Java 8功能的正式支持。 這為許多不錯的改進打開了大門,例如:
創(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困擾的付費客戶感到失望。
如何在單個API中支持多個Java版本
這就是為什么我們繼續(xù)為商業(yè)客戶發(fā)布Java 6版本的jOOQ 。 我們是怎么做的? 非常簡單地。 我們的商業(yè)代碼庫(這是我們的主要代碼庫)包含大量的“標志”,如以下示例所示:
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] */}(當然, AutoCloseable在Java 7中已經(jīng)可用,但是我們沒有Java 7版本)。
當構(gòu)建jOOQ時,在使用預(yù)處理器從源文件中剝離邏輯之后,我們對其進行了多次構(gòu)建:
- 商業(yè)Java 8版本是按原樣構(gòu)建的
- 通過剝離[java-8]和[/java-8]標記之間的所有代碼,構(gòu)建第二個商業(yè)Java 6版本
- 通過向商業(yè)版本添加一些代碼來構(gòu)建商業(yè)免費試用版。
- 通過剝離[pro]和[/pro]標記之間的所有代碼,構(gòu)建了第三個開源版本
這種方法的優(yōu)點
與其他方法相比,此方法有幾個優(yōu)點:
- 我們只有一個事實來源,即原始的商業(yè)源代碼。
- 所有不同版本中的行號均相同
- 這些API在一定程度上是兼容的
- 通過類加載或反射不會涉及任何魔術(shù)
缺點是:
- 提交到存儲庫會比較慢,因為我們有幾個存儲庫。
- 發(fā)布版本需要更長的時間,因為需要構(gòu)建不同的版本并多次測試集成
- 有時,我們只是忘了添加一個標記,而當Java-6每晚構(gòu)建崩潰時,我們不得不重新構(gòu)建
- 我們?nèi)匀徊荒茉贘ava 6版本(大多數(shù)代碼)中包含的普通代碼中使用lambda表達式。
我們認為,優(yōu)勢明顯勝過。 只要我們的客戶能夠,并且只要那些受困于舊版本的客戶仍然能夠升級到最新的jOOQ版本,就可以實現(xiàn)一流的Java功能就可以了。
我們期待在不影響現(xiàn)有用戶的情況下支持JDK 9功能,例如模塊化和新的Flow API 。
你呢?
您如何實現(xiàn)跨JDK版本的兼容性?
翻譯自: https://www.javacodegeeks.com/2016/03/support-java-6-8-9-single-api.html
java8返回單個號碼
總結(jié)
以上是生活随笔為你收集整理的java8返回单个号码_如何在单个API中支持Java 6、8、9的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是平方反比定律 平方反比定律介绍
- 下一篇: java美元兑换,(Java实现) 美元