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 在 Oracle OpenWorld 2006

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

Rod 和我目前在舊金山參加 Oracle OpenWorld 2006。 這真是一個盛況。 我無法判斷用“傲慢”還是“令人印象深刻”來形容它更合適,但數字不會說謊。 他們預計將有 45000 人參加這次會議,舊金山市認為這次展覽將為該市帶來 5000 萬至 6000 萬美元的收入。 顯然,不允許任何 Oracle 員工住在機場以北的飯店。 更令人震驚的事情之一是,該市封鎖了 Moscone 前面的一段 Howard St. 來舉辦這次會議。

在今天上午由 Oracle 高級副總裁 Thomas Kurian 主講的 Oracle Develop 主題演講中,Spring 處於最前沿的位置。 Thomas 讓 Rod 在主題演講中上台,描述 Spring 是什麼以及 Spring 2.0 的新增功能。 Rod 還談到了合作…

Spring 2.0 final,第一天下載量超過 10,000 次

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

Spring 2.0 週二發布了 final 版本! 這是 Spring 團隊 9 個月辛勤工作的成果,以及大量用戶的回饋(謝謝!),這是向前邁出的一大步。

我保證我的下一篇部落格文章將與下載量無關。 我一直在嘗試一些有趣的方法來測試 @AspectJ 註解中的 pointcut,所以我希望下次能發佈一些有趣的程式碼。

但我們剛剛注意到 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 final 路線圖功能完整。 Spring Web Flow 1.0 final 將在下週發布,只有極少的變更。 從現在到那時,我們鼓勵您測試 1.0 RC4,以幫助在大型 1.0 發布之前發現任何剩餘問題。

請注意,此版本中有影響使用者的變更。 1.0 RC3 或更早版本的使用者應查看 升級指南,其中詳細說明了這些變更。

1.0 RC4 中的新增功能和值得注意的功能是一個令人興奮的列表,包括:

新增功能和值得注意的功能

作為 Spring Web Flow 1.0 final 之前的最終發布候選版本,Spring Web Flow 1.0 RC4 引入了強大的新功能,例如 render actions (1)、evaluate actions (2)、set actions (3)、flash scope (4)、flow execution attributes (5) 和 always redirect on pause (6)。 它提供了增強的文件、更好的流程定義驗證、智慧預設值和完整的自訂 Spring 2.0 配置 schema (7),用於配置流程執行引擎。

  • (1) Render actions 在呈現回應之前執行應用程式行為。 當要求 view-state 選擇可呈現的視圖時,會在進入時或由重新導向或瀏覽器重新整理按鈕觸發的重新整理時調用 render action。 以下範例顯示了一個 render-action,它在呈現結果視圖之前執行電話簿搜尋。

    <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) Evaluate actions 評估針對流程執行狀態的表達式。 表達式(預設情況下基於 OGNL)可以針對從流程執行的根 RequestContext 可訪問的任何物件,包括任何範圍(例如流程範圍)中的物件。 以下範例顯示了一個 evaluate-action,它調用 "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) Set actions 設定範圍類型(例如流程範圍)中的屬性值。 屬性可以是頂層屬性,也可以是巢狀屬性路徑中的屬性。 以下範例顯示了一個 set-action,它將 flash 範圍中的 "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) Flash 範圍是一種新的範圍類型,用於跨重新導向和視圖的任何重新整理來持久保存屬性。 當發出事件以轉換出視圖時,快閃記憶體範圍將被清除。 以下完整的流程定義範例顯示了如何使用 flash 範圍將 "fileUploaded" 屬性公開給 selectFile view-state,以便在成功上傳後顯示成功訊息。
    <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 設定方言 (Configuration Dialect) 大大簡化了系統設定,並提供了強大的驗證和工具支援。現在,設定 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">
   
        <!-- 啟動新的流程執行並恢復現有的執行。 -->   
        <flow:executor id="flowExecutor" registry-ref="flowRegistry"/>
       
        <!-- 為此應用程式建立流程定義的登錄檔 -->
        <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. Phonebook - 展示大多數功能的原始範例(包括子流程)
  2. Sellitem - 展示具有條件轉換、流程執行重新導向、自訂文字欄位格式和延續的精靈
  3. Flowlauncher - 展示了啟動和恢復流程的所有可能方法
  4. Itemlist - 展示 REST 風格的 URL 和內聯流程
  5. Shippingrate - 展示 Spring Web Flow 與 Ajax 技術的結合使用
  6. NumberGuess - 展示有狀態的 beans、evaluate actions 和「單鍵」流程執行重新導向。
  7. Birthdate - 展示 Struts 整合
  8. Fileupload - 展示 multipart 檔案上傳、set actions 和 flash scope
  9. Phonebook-Portlet - Portlet 環境中的 phonebook 範例(請注意流程定義未變更)
  10. Sellitem-JSF - JSF 環境中的 sellitem 範例

若要建置範例應用程式以進行快速評估,只需

  1. 解壓縮 spring-webflow-1.0-rc4.zip 發行封存檔
  2. 存取 projects/spring-webflow/build-spring-webflow 目錄
  3. 執行 "ant dist" 目標。
  4. 請參閱 "target/artifacts" 目錄,以取得每個範例的可部署 .war 檔案以及展開的 war 目錄。
有關發行封存檔內容和範例的更多資訊,請分別參閱發行 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 POM 已就緒

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

在充滿 Spring 2.0 公告的一天中,最後一個 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 Final 已發佈

發佈 | 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 查詢物件。
  • 在一行配置代碼中將外部化屬性公開給您的服務。
  • 使用單個註解將一致的異常處理策略應用於您的資料存取物件。
  • 透過定義單個配置標籤來調用無狀態遠端 EJBs。不再需要自訂服務定位器或業務委託。
簡化在 框架的模組中繼續,允許您
  • 在一行代碼中編寫參數化的 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 中包含的檔案即可。

祝您使用愉快,並感謝您

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 年 9 月 29 日 | ...

當我與客戶交談時,常聽到一個常見的誤解,認為所有關於泛型類型的資訊都會從您的 Java 類別檔案中抹除。這完全是不正確的。所有靜態泛型資訊都會保留,只有關於個別實例的泛型資訊才会被抹除。因此,如果我有一個類別 Foo 實作了 List<String>,那麼我可以判斷 Foo 在執行時實作了由 String 參數化的 List 介面。但是,如果我在執行時實例化一個 ArrayList<String> 的實例,我無法取得該實例並判斷其具體類型參數(我可以判斷 ArrayList 需要類型參數)。在這篇文章中,我將向您展示一些可用的泛型中繼資料的實際用法,這些中繼資料簡化了策略介面和實作的建立,這些策略介面和實作因它們處理的物件類型而異。

我在許多應用程式中看到的一種模式是使用某種類型的策略介面,其具體實作各自處理特定的輸入類型。例如,考慮一個來自投資銀行世界的簡單場景。任何公開交易的公司都可以發布公司行動,這些行動會對其股票產生實際變化。一個重要的例子是股利支付,即向所有股東支付每股一定數量的現金、股票或財產。在投資銀行中,接收這些事件的通知並計算由此產生的權利非常重要,以便使交易簿與正確的股票和現金價值保持最新狀態。

作為一個具體的例子,考慮持有 1,200,000 股 IBM 股票的 BigBank。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 年 9 月 25 日 | ...

我很高興地宣布,新英格蘭 Java 使用者團體中的 Spring SIG 將在本週四(2006 年 9 月 28 日)舉行我們的第一次會議。Ramnivas LaddadAspectJ in Action 的作者和 Interface21 的負責人)將發表 "AspectJ for Spring Developers"。這將是一個了解 Spring 2.0 中 AspectJ 整合增強功能的絕佳機會。

您可以閱讀此處的詳細資訊,如果您計劃參加,請務必點擊頁面左側的「Register」連結。

這個團體將為「所有關於 Spring 的事情」提供一個很好的論壇,最初大約每季舉行一次會議。我期待建立一個社群,並親自與大波士頓地區的其他 Spring 使用者見面。

特別感謝 NEJUG 主席 Steven Maienza 和 NEJUG 成員,他們表示有興趣成立 Spring 團體,並在我甚至搬到波士頓之前就推動了這件事。謝謝!

好久不見,部落格

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

歡迎來到我的新部落格!我自 2004 年 8 月以來就沒有寫部落格了,但受到我們新團隊部落格的啟發,努力提升自己。我也因同事的部落格活力而感到羞愧。

我目前對許多主題感到非常興奮,並承諾在未來會比每 2 年一次更次地寫部落格......請繼續關注我關於 Spring 2.0 及其以後、OO 設計、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 日:這將是最有趣的。Spring Experience,在佛羅里達州好萊塢。今年我們預計將有超過 500 名開發人員和一如既往的優秀演講者。Keith 在 Jay Zimmerman(No Fluff Just Stuff 的名人)的協助下,正在努力組織它。
  • 12 月 11-15 日:在安特衛普舉行的 JavaPolis。一個大型的歐洲會議,對與會者來說非常有價值,並且總是有頂級的演講者陣容 - 可能是因為組織者 Stephan Janssen 似乎認識 Java 社群中的每個人。當然,比利時也總是值得一遊,即使只是為了啤酒。我特別喜歡比利時白啤酒。
哎呀。即使寫下這個清單也讓我感到疲倦。幸運的是,在過去的幾個月裡,我的飛行次數比平常少了很多,所以我避開了英國機場的延誤和限制。但很明顯,到 12 月下旬,我將非常需要休息......

謝謝!Spring Framework 的下載量超過 100 萬次

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

幾週前,Spring Framework 專案在其 SourceForge 上的家的下載量超過了 100 萬次。真實的總數可能要高得多,因為這個數字不包括 nightly builds 或可以下載 Spring 的其他網站。當然,Spring 包含在大量且不斷增長的其他產品的發行版中。然後還有 Spring.NET...

最重要的是,Spring 繼續獲得動力:數字增長非常迅速。下載次數最多的 Spring 版本是最近的生產版本 1.2.8,已被下載 175,000 次......

獲取 Spring 電子報

透過 Spring 電子報保持聯繫

訂閱

搶先一步

VMware 提供培訓和認證,以加速您的進度。

瞭解更多

獲得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

瞭解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部