Oracle、開源和商品化

工程 | Rod Johnson | 2006 年 10 月 28 日 | ...

我在舊金山參加 Oracle World。我甚至在 Thomas Kurian 關於 Java 中介軟體的主題演講中簡短髮言。但 Neelan 和我不得不在週二離開,錯過了大新聞:Larry Ellison 宣佈 Oracle 將為 Linux 提供支援

從開源業務的角度來看,這是一個有趣的事件。更廣泛的影響是什麼?

Oracle 正在為他們沒有建立和不控制的開源產品提供支援。

這可能是由於多種原因

  • Linux 不是一個產品。它是一類技術,公司或組織負責組裝、文件、分發和支援產品。
  • Linux 支援在一定程度上已經商品化。Red Hat 只是提供支援的幾家分銷商之一。
  • Linux 的領導權是分散的。Linus Torvalds 不為大型分銷商工作;Red Hat 比大多數公司做得更多,但沒有一家公司提供明確的領導。
  • Linux 的領導作用不如你想象的那麼重要。Linux 主要不是創新的引擎,而是商品化的引擎。

不過,很有趣的是思考像 Oracle 這樣的公司在提供…方面有什麼限制。

Interface21 / Spring 在 2006 年甲骨文全球大會

工程 | Neelan Choksi | 2006 年 10 月 23 日 | ...

Rod 和我正在舊金山參加 2006 年甲骨文全球大會。這確實是一個盛大的場面。我無法決定“傲慢”還是“令人印象深刻”是描述它的正確方式,但數字不會說謊。他們預計大會將有 45000 人參加,舊金山市認為此次展會將為該市帶來 5000 萬至 6000 萬美元的收入。顯然,任何甲骨文員工都不允許住在機場以北的酒店。更令人震驚的事情之一是,城市為了會議,封閉了莫斯康門前霍華德街的一段路。

在今天上午由 甲骨文高階副總裁 Thomas Kurian 發表的 Oracle Develop 主題演講中,Spring 處於核心位置。Thomas 請 Rod 上臺,在主題演講中描述 Spring 是什麼以及 Spring 2.0 的新特性。Rod 還談到了協作……

Spring 2.0 最終版,首日下載量超過 10,000

工程 | Rod Johnson | 2006 年 10 月 05 日 | ...

Spring 2.0 已於週二釋出最終版!這是 Spring 團隊 9 個月辛勤工作和大量使用者反饋(感謝!)的成果,也是一個巨大的進步。

我保證我的下一篇部落格將不再是關於下載數量的。我一直在嘗試一些有趣的測試 @AspectJ 註解中切入點的方法,所以我希望下次能釋出一些有趣的程式碼。

但我們剛剛注意到 SourceForge 上的一些驚人數字,所以我忍不住要發帖介紹它們。Spring 2.0 在釋出後的 24 小時內就有超過 10,000 次下載!對 Spring 2.0 的興趣已經積累了好幾個月——一些使用者已經在生產環境中使用了一個釋出候選版本,其中包括歐洲一個著名的媒體網站——我認為Keith 的精彩釋出頁面

Spring Web Flow 1.0 RC4 釋出

釋出 | Keith Donald | 2006 年 10 月 05 日 | ...
親愛的Spring社群,
 
我們很高興地宣佈 Spring Web Flow 1.0 RC4 已釋出。
 

 

Spring Web Flow 是 Spring 社群的一個產品,專注於協調 Web 應用程式中的使用者介面流程。

此版本包含許多改進和幾個令人興奮的新功能。我們認為它是迄今為止最穩定的版本,並且最終,此版本使 Spring Web Flow 1.0 最終路線圖功能完善。Spring Web Flow 1.0 最終版將於下週釋出,改動極小。在此期間,我們鼓勵您測試 1.0 RC4,以幫助在 1.0 正式釋出前發現任何剩餘問題。

請注意,此版本中存在影響使用者的更改。1.0 RC3 或更早版本的使用者應查閱 升級指南,其中詳細概述了這些更改。

1.0 RC4 中的新增和值得注意的特性列表令人興奮,包括:

新增和值得注意

作為 Spring Web Flow 1.0 最終版之前的最後一個釋出候選版,Spring Web Flow 1.0 RC4 引入了強大的新功能,例如渲染動作 (1)、評估動作 (2)、設定動作 (3)、快閃記憶體範圍 (4)、流程執行屬性 (5) 和始終在暫停時重定向 (6)。它提供了增強的文件、更好的流程定義驗證、智慧預設值以及用於配置流程執行引擎的完整自定義 Spring 2.0 配置模式 (7)。

  • (1) 渲染動作在響應渲染之前執行應用程式行為。當檢視狀態被要求進行可渲染檢視選擇時,渲染動作會被呼叫,無論是在進入時還是在由重定向或瀏覽器重新整理按鈕觸發的重新整理時。以下示例顯示了一個渲染動作,它在呈現結果檢視之前執行電話簿搜尋。

    <view-state id="displayResults" view="searchResults">
        <render-actions>
            <bean-action bean="phonebook" method="search">
                <method-arguments>
                    <argument expression="flowScope.searchCriteria"/>          
                </method-arguments>
                <method-result name="results"/>
            </bean-action>
        </render-actions>
        <transition on="newSearch" to="enterCriteria"/>
        <transition on="select" to="browseDetails"/>
    </view-state>

  • (2) 評估動作根據流程執行狀態評估表示式。表示式(預設基於 OGNL)可以針對流程執行的根 RequestContext 可訪問的任何物件,包括任何範圍(例如流程範圍)中的物件。以下示例顯示了一個評估動作,它呼叫“game”流程範圍 bean 上的“makeGuess”方法
    <action-state id="makeGuess">
        <evaluate-action expression="flowScope.game.makeGuess(requestParameters.guess)">
            <evaluation-result name="guessResult"/>
        </evaluate-action>
        <transition on="CORRECT" to="showAnswer"/>
        <transition on="*" to="enterGuess"/>
        <transition on-exception="java.lang.NumberFormatException" to="enterGuess"/>
    </action-state>
  • (3) 設定動作設定範圍型別(如流程範圍)中的屬性值。屬性可以是頂級屬性,也可以是巢狀屬性路徑中的屬性。以下示例顯示了一個設定動作,它將快閃記憶體範圍中的“fileUploaded”屬性設定為“true”。
    <action-state id="uploadFile">
        <action bean="uploadAction" method="uploadFile"/>
        <transition on="success" to="selectFile">
            <set attribute="fileUploaded" scope="flash" value="true"/>
        </transition>
    </action-state>
  • (4) 快閃記憶體範圍是一種新的範圍型別,用於在重定向和檢視的任何重新整理之間持久化屬性。當事件被訊號通知從檢視中轉換時,快閃記憶體範圍將被清除。以下完整的流程定義示例顯示了使用快閃記憶體範圍將“fileUploaded”屬性公開給 selectFile 檢視狀態,以便在成功上傳後顯示成功訊息。
    <flow xmlns="http://www.springframework.org/schema/webflow"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/webflow
                                           http://www.springframework.org/schema/webflow/spring-webflow-1.0.xsd">
   
        <start-state idref="selectFile"/>
       
        <view-state id="selectFile" view="fileForm">
            <transition on="submit" to="uploadFile"/>
        </view-state>
   
        <action-state id="uploadFile">
            <action bean="uploadAction" method="uploadFile"/>
            <transition on="success" to="selectFile">
                <set attribute="fileUploaded" scope="flash" value="true"/>
            </transition>
        </action-state>
       
    </flow>
  • (5) 流程執行屬性允許您設定自定義屬性,這些屬性可以影響流程執行行為。以下示例顯示了在 Portlet 環境中將“alwaysRedirectOnPause”屬性設定為 false 的指令(其中重定向通常不適用)。
    <flow:executor id="flowExecutor" registry-ref="flowRegistry">
        <flow:execution-attributes>
            <flow:alwaysRedirectOnPause value="false"/>
        </flow:execution-attributes>
    </flow:executor>
  • (6) “始終在暫停時重定向”為您提供預設的 POST+REDIRECT+GET 行為,無需特殊編碼。現在,預設情況下,當進入檢視狀態時,會自動發出重定向。這會觸發對流程執行 URL 的重新整理,該 URL 在會話處於活動狀態時保持穩定。
  • (7) 新的 Spring 2.0 配置方言極大地簡化了系統配置並提供了強大的驗證和工具支援。配置 webflow 的基礎設施現在只需定義兩個元素,如下完整所示
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:flow="http://www.springframework.org/schema/webflow-config"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/webflow-config
               http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
   
        <!-- Launches new flow executions and resumes existing executions. -->   
        <flow:executor id="flowExecutor" registry-ref="flowRegistry"/>
       
        <!-- Creates the registry of flow definitions for this application -->
        <flow:registry id="flowRegistry">
            <flow:location path="/WEB-INF/flows/**-flow.xml"/>
        </flow:registry>
       
    </beans>

有關這些功能的更多資訊,請參閱參考手冊。Spring Web Flow 1.0 RC4 進一步完善了參考文件,提供了 70 頁關於 SWF 用法的內容。手冊可線上獲取 HTMLPDF 格式。

入門

開始使用 Spring Web Flow 的最佳方法之一是檢視和演練示例應用程式。我們建議檢視所有示例,並根據需要從一開始就補充參考手冊材料。此版本附帶了十個示例應用程式,每個應用程式都演示了一組獨特的產品功能。這些示例是

  1. 電話簿 - 演示大多數功能(包括子流程)的原始示例
  2. 售賣商品 - 演示帶有條件轉換、流程執行重定向、自定義文字欄位格式和續期的嚮導
  3. 流程啟動器 - 演示啟動和恢復流程的所有可能方式
  4. 專案列表 - 演示 REST 風格的 URL 和內聯流程
  5. 運費 - 演示 Spring Web Flow 與 Ajax 技術結合使用
  6. 猜數字 - 演示有狀態 bean、評估動作和“單一鍵”流程執行重定向。
  7. 生日 - 演示 Struts 整合
  8. 檔案上傳 - 演示多部分檔案上傳、設定動作和快閃記憶體範圍
  9. 電話簿-Portlet - Portlet 環境中的電話簿示例(請注意流程定義沒有改變)
  10. 售賣商品-JSF - JSF 環境中的售賣商品示例

要快速評估示例應用程式,只需

  1. 解壓 spring-webflow-1.0-rc4.zip 釋出歸檔檔案
  2. 訪問 projects/spring-webflow/build-spring-webflow 目錄
  3. 執行“ant dist”目標。
  4. 請參閱“target/artifacts”目錄,其中包含每個示例的可部署 .war 檔案以及已解壓的 war 目錄。
有關釋出歸檔內容和示例的更多資訊,請分別參閱 release readme.txt 和 projects/spring-webflow/spring-webflow-samples/readme.txt。

所有示例專案都是 Spring IDE 專案,可直接匯入 Eclipse。

感謝所有支援此版本的人。Spring Web Flow 1.0 終於...指日可待。

祝您使用愉快!

Spring Web Flow 團隊

Spring 2.0 Maven POMs 已就緒

工程 | Ben Hale | 2006 年 10 月 04 日 | ...

在今天眾多 Spring 2.0 公告中,這是最後一個。Spring 2.0 的 Maven POM 已上傳到 Spring 的私有倉庫。如果你想直接指向它,請檢視https://svn.sourceforge.net/svnroot/springframework/repos/repo/。如果你想等待,它們應該會在接下來的幾天內複製到 Ibiblio Maven 倉庫。

對於那些喜歡瀏覽更多元資料的人來說,SourceForge 的ViewVC 介面是一個不錯的選擇。請記住,你應該使用前一個連結作為 maven 的 URL,但你可以使用後一個連結進行瀏覽。


更新於 10/3 22:03:添加了關於 ViewVC 的段落

Spring 2.0 最終版釋出

釋出 | Rod Johnson | 2006 年 10 月 3 日 | ...

我們很高興地宣佈,備受期待的 Spring Framework 2.0 最終版現已釋出。

Spring 2.0 Released

下載 | 文件 | 更新日誌 

作為領先的全棧 Java/Java EE 應用程式框架,Spring 為許多專案帶來了顯著的好處,減少了開發工作和成本,同時提高了測試覆蓋率和質量。

經過 9 個月的積極開發,這個穩定、生產級的版本終於釋出了。在如此短的時間內,Spring 2.x 系列已經取得了巨大的成熟,受益於 9 個里程碑版本的超過 150,000 次早期訪問下載,解決了超過 750 個 JIRA 問題,其中 50 個引入了主要的新功能。

有什麼新內容?

我們相信三個屬性概括了使用者對 Spring 2.0 系列的期望:簡單強大成熟


2.0 版對框架的整體使用模型帶來了重大簡化。正如我們現有使用者所知,Spring 的核心是 Bean 容器,它驅動您的 Java 和 Java EE 應用程式的配置。在 2.0 版中,透過引入自定義 Bean 配置方言,許多常見的配置任務得到了簡化。這對您意味著什麼?

這意味著您現在可以

  • 在一行配置程式碼中使您的業務服務具有事務性。
  • 在一行配置程式碼中從 JNDI 查詢物件。
  • 在一行配置程式碼中將外部化屬性公開給您的服務。
  • 使用單個註解將一致的異常處理策略應用於您的資料訪問物件。
  • 透過定義單個配置標籤呼叫無狀態遠端 EJB。不再需要自定義服務定位器或業務委託。
簡化繼續貫穿框架的模組,讓您能夠
  • 在一行程式碼中編寫引數化 JDBC 查詢。
  • 在部署 Spring MVC 控制器時應用約定優於配置
  • 在開發輸入表單時使用 Spring JSP 標籤減少輸入。


Spring 2.0 的一個主要目標是讓常見任務變得更容易。2.0 版本也為以優雅的方式解決更困難的問題開闢了令人興奮的新途徑。在 2.0 中,您可以

  • 使用 AspectJ 簡潔的切入點表示式語言,將自定義行為編織到程式執行的多個點。
  • 以事務和執行緒安全保證接收非同步 JMS 訊息。觀看演示
  • 為您的應用程式開發自己的Bean 配置方言
  • 以執行緒安全的方式從自定義範圍(如“請求”和“會話”範圍)注入物件。
  • 從您的 Java 應用程式呼叫 Groovy、Beanshell 和 JRuby 指令碼。
  • 使用複雜的執行緒和池選項非同步排程任務。

2.0 版建立在 Spring 1.x 奠定的基礎之上。這個新版本提供了主要的新功能,同時儘可能保持向後相容性。

自 2004 年 3 月釋出以來,Spring 1.x 已被下載超過一百萬次,使使用普通 Java 物件 (POJO) 開發複雜應用程式成為事實上的標準。2.x 系列在此廣泛認可的最佳實踐之上,提供了新的簡化和強大功能,同時完全相容已建立的 Spring 1.x 系列。使用者可以期望他們的升級是直接的;在大多數情況下,只需將 1.2.8 JAR 檔案替換為 Spring 2.0 中包含的 JAR 檔案。

請享受,並感謝您

Spring 2.0 代表了過去一年許多人的共同努力。從 Interface21 的主要開發人員 Juergen、Rob、Rick 和 Costin,到我們的支援合作伙伴 BEA 和 Oracle,再到社群中貢獻創新、補丁、文件、錯誤報告和測試的許多人——這裡麵包含了大量的汗水、努力和淚水。我們衷心希望您在使用這個新版本時感到像我們構建它時一樣快樂。享受它吧,並且請放心:工作不會止步於此。

此致,

Spring 團隊

 


其他資源

  • 參加 2006 年 Spring 體驗大會,這是 Spring 社群的頂級會議,將於 12 月 7 日至 10 日在佛羅里達州好萊塢舉行。在 10 月 16 日前註冊可為您的團隊獲得早鳥折扣。
  • 透過路線圖跟蹤未來的 Spring 2.x 開發
  • 請收藏此頁面,以獲取更多演示新 2.0 功能的截圖影片和程式碼示例。

利用泛型元資料

工程 | Rob Harrop | 2006 年 09 月 29 日 | ...

我與客戶交談時經常聽到一種普遍的誤解,認為 Java 類檔案中的所有泛型資訊都會被擦除。這完全是錯誤的。所有靜態泛型資訊都會被保留,只有關於單個例項的泛型資訊會被擦除。所以,如果我有一個實現 List<String> 的類 Foo,那麼我可以在執行時確定 Foo 實現的是以 String 為引數的 List 介面。但是,如果我在執行時例項化一個 ArrayList<String> 的例項,我無法透過該例項來確定其具體的型別引數(但我可以確定 ArrayList 需要型別引數)。在這篇文章中,我將向您展示一些可用的泛型元資料的一個實際用途,這些元資料可以簡化策略介面和實現(根據它們處理的物件型別而有所不同)的建立。

我在許多應用程式中看到的一種模式是使用某種策略介面,其具體實現分別處理特定的輸入型別。例如,考慮投資銀行業務中的一個簡單場景。任何上市公司都可以釋出公司行為,從而導致其股票發生實際變化。一個主要例子是股息支付,它按每股向所有股東支付一定數量的現金、股票或財產。在投資銀行內部,接收這些事件的通知並計算由此產生的權益非常重要,以便使交易賬簿與正確的股票和現金價值保持同步。

作為一個具體示例,考慮 BigBank 持有 1,200,000 股 IBM 股票。IBM 決定派發每股 0.02 美元的股息。因此,BigBank 需要接收股息行動的通知,並在適當的時間更新其交易賬簿,以反映額外的 24,000 美元可用現金。

權益的計算將根據執行的公司行動型別而有很大差異。例如,合併很可能導致一家公司的股票損失和另一家公司的股票增加。

如果我們考慮這在 Java 應用程式中可能是什麼樣子,我們可以假設會看到類似(大大簡化)的示例


public class CorporateActionEventProcessor {

    public void onCorporateActionEvent(CorporateActionEvent event) {
        // do we have any stock for this security?

        // if so calculate our entitlements
    }
}

關於事件的通知可能透過多種機制從外部方傳入,然後傳送到這個 CorporateActionEventProcessor 類。CorporateActionEvent 介面可能透過許多具體類實現


public class DividendCorporateActionEvent implements CorporateActionEvent {

    private PayoutType payoutType;
    private BigDecimal ratioPerShare;

    // ...
}

public class MergerCorporateActionEvent implements CorporateActionEvent {

    private String currentIsin; // security we currently hold
    private String newIsin; // security we get
    private BigDecimal…

波士頓 Spring 小組首次會議

工程 | Mark Fisher | 2006 年 09 月 25 日 | ...

我非常激動地宣佈,新英格蘭 Java 使用者組 (New England Java Users Group) 內的 Spring SIG 將於本週四(2006 年 9 月 28 日)舉行首次會議。Ramnivas Laddad(《AspectJ in Action》作者和 Interface21 首席工程師)將發表題為“AspectJ for Spring Developers”的演講。這將是瞭解 Spring 2.0 中 AspectJ 整合增強功能的好機會。

你可以在此處閱讀詳細資訊,如果你打算參加,請務必點選頁面左側的“註冊”連結。

這個小組將為“所有與 Spring 相關的事物”提供一個很棒的論壇,最初大約每季度開會一次。我期待著建立一個社群,並親自會見波士頓地區的 Spring 使用者。

特別感謝 NEJUG 主席 Steven Maienza 和 NEJUG 成員,他們表達了組建 Spring 小組的興趣,並在我搬到波士頓之前就將其付諸實施。謝謝!

好久不見,再次寫部落格

工程 | Rod Johnson | 2006年9月22日 | ...

歡迎來到我的新部落格!自2004年8月以來,我一直沒有寫部落格,但受到了我們新團隊部落格的啟發,試圖提升自己的水平。我也被同事們在部落格上投入的精力所“羞愧”。

目前,我對許多話題都非常興奮,並承諾將來寫部落格的頻率會比每兩年一次多得多……敬請期待我對Spring 2.0及更高版本、面向物件設計、AOP以及企業級Java未來的思考。

與此同時,我將分享我未來幾個月的旅行日程(這至少可以給我一個不總是定期發帖的藉口)。

  • 10月1-6日:在丹麥奧胡斯舉行的JAOO會議。
  • 10月10-11日:在布拉格舉行的BEAWorld活動。布拉格總是一座美麗的城市,儘管它不再是一個便宜的旅遊目的地。
  • 10月23日:在舊金山舉行的Oracle Develop活動(Oracle Open World大會的新組成部分)上,就Spring 2.0發表主題演講。這看起來將是一次大型會議。
  • 11月:我將在澳大利亞度過11月的大部分時間,部分是為了探親訪友,部分是因為Interface21在那裡開設了一個新辦事處,由Acegi Security負責人Ben Alex領導。我將在各種活動中發表演講,包括悉尼和布里斯班的Spring使用者組、悉尼JUG以及墨爾本的一個論壇。
  • 11月27-28日:在新加坡舉行的JAX Asia會議。這是一個新會議。德國的JAX會議規模宏大且內容有趣,所以我很期待。時間安排得非常巧合,這正是我從悉尼返回倫敦的時候,所以我實際上就在附近……雅加達也有一個JAX會議,但我對未來幾個月的旅行忍耐度已經達到了極限,所以無法承諾參加。
  • 12月7-10日:這將是最有趣的。在佛羅里達州好萊塢舉行的The Spring Experience。今年我們預計將有500多名開發者參加,並一如既往地邀請到優秀的演講者。Keith與No Fluff Just Stuff的Jay Zimmerman一起,在組織方面做得非常出色。
  • 12月11-15日:安特衛普的JavaPolis。這是一次大型歐洲會議,對與會者來說非常有價值,並且總是有頂級的演講嘉賓陣容——這可能是因為組織者Stephan Janssen似乎認識Java社群中的所有重要人物。當然,比利時總是值得一遊,即使只是為了啤酒。我特別喜歡比利時白啤酒。
哎呀。光是寫下這份清單就讓我感到疲憊。幸運的是,過去幾個月我飛行的次數比平時少了很多,所以避開了英國機場的延誤和限制。但很明顯,到12月底,我將急需休息……

感謝大家!Spring Framework下載量突破100萬次

工程 | Rod Johnson | 2006年9月22日 | ...

幾周前,Spring Framework專案在其SourceForge主頁上的下載量突破了100萬次。真實的總數可能要高得多,因為這個數字不包括每日構建或Spring可以下載的其他站點。當然,Spring也被包含在大量且不斷增長的其他產品的發行版中。還有Spring.NET……

最重要的是,Spring 勢頭持續增長:數字增長非常迅速。下載次數最多的 Spring 版本是最近的生產版本 1.2.8,已被下載 175,000 次…

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有