領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多在 SpringOne2gx 大會上,我們宣佈了在社交媒體和移動應用程式開發領域令人興奮的新舉措。幾周前,Craig Walls 釋出了 Spring Social。今天,Roy Clarkson 釋出了 Spring Mobile 和 Spring Android。在這篇文章中,我將重點介紹這些專案,並分享 Spring 如何旨在簡化移動應用程式開發。
如果您參加了今年的 SpringOne2gx,您就會看到 Greenhouse,這是我們為社群構建的一個應用程式,它同時也是 Spring 技術的一個參考和驅動。Craig 向您展示了 Greenhouse 的一些社交元素,例如將您的帳戶與 Twitter 和 Facebook 連線的功能。它還有許多移動元素。具體來說,Greenhouse 既可以作為行動網路應用程式,又支援原生的 Greenhouse for iPhone 和 Android 客戶端。
像當今許多組織一樣,我們必須回答一個基本問題:“要針對哪些移動平臺?”最終,我們選擇為 iPhone 和 Android 使用者投資原生體驗,同時還開發了一個跨平臺的行動網路應用程式。我們選擇原生的決定是由於該應用程式面向消費者,並且大量潛在消費者(應用程式開發人員)擁有 iPhone 和 Android 裝置。同時,行動網路應用程式旨在提供一個跨平臺工作的良好基線體驗,這在 WebKit 和 HTML 5 興起的今天成為可能。
從我們的開發工作中,產生了 Spring Framework 的貢獻:首先是 Spring Mobile 專案,它為開發行動網路應用程式提供了 Spring MVC 的擴充套件;其次是 Spring Android 專案,它支援開發與基於 Spring 的後端通訊的原生 Android 客戶端。我將依次介紹這些專案。
在 Greenhouse 中,我們從伺服器端檢測開始。具體來說,如果裝置是移動裝置,我們旨在應用不同的頁面佈局。由此產生了通用的“裝置解析器抽象”,這是 Spring Mobile 1.0.0.M1 的決定性功能。此功能的一些亮點包括
<interceptors>
<!-- On pre-handle, detect the device that originated the web request -->
<beans:bean class="org.springframework.mobile.device.mvc.DeviceResolvingHandlerInterceptor" />
</interceptors>
現在,如果裝置不是移動裝置,則有條件地呈現某些內容的 JSP 模板
Please try again<c:if test="${!currentDevice.mobile}"> or <a href="<c:url value="/signup" />">sign up</a></c:if>.
最後,如果裝置是移動裝置,則更改的基於 Tiles 的頁面佈局
<definition name="page" templateExpression="/WEB-INF/layouts/${currentDevice.mobile ? 'mobile/' : 'standard/'}page.jsp" />
除了這些功能之外,Spring Mobile 1.0.0.M1 還提供了
最近,我們也開始探索使用 CSS 3 媒體查詢 和 JavaScript 來執行客戶端檢測。這種方法的優點是不需要特殊的伺服器端處理,除非您旨在改變您傳送到裝置的語義內容,而不僅僅是最佳化樣式。並非所有瀏覽器都支援媒體查詢,因此它們可能不適合您,但如果您針對基於 WebKit 瀏覽器的智慧手機,您應該沒問題。總的來說,首先為移動裝置設計應用程式,然後逐步增強桌面體驗的方法對我來說感覺非常優雅。
對於 Android 客戶端,出現了一系列不同的挑戰。我們需要透過 REST 經 HTTPS 與伺服器交換資料,並且由於這些資料是使用者特定的,我們要求使用者登入。我們沒有使用基本身份驗證(我們需要在裝置本身儲存使用者名稱和密碼憑據),而是選擇了 OAuth。
OAuth 是一種新興標準,提供基於令牌的授權方案。本質上,使用者名稱和密碼被交換為訪問令牌,訪問令牌用於對受保護資源發出請求。這意味著您只需將訪問令牌與裝置一起儲存即可實現“記住我”功能。此外,我們選擇實現登入過程,即客戶端會將您帶到伺服器的網站進行連線授權。透過這種方式,客戶端永遠不會看到您的使用者名稱和密碼,如果您允許第三方客戶端針對您的 API 進行開發(我們也希望鼓勵這樣做),這一點很重要。最後,如果使用者的手機被盜或受到其他損害,可以在不冒使用者名稱和密碼洩露風險的情況下使訪問令牌失效。
從這項工作中,產生了使 Spring Framework 的特定模組在 Android 環境中工作的願望。具體來說,我們旨在將 RestTemplate 用於 REST API 呼叫,並將 Spring Security 用於 OAuth 客戶端。
我很高興宣佈 Spring Android 的第一個里程碑版本釋出了一個“Android 就緒”的 RestTemplate。我們正在 Greenhouse 中使用它,我們鼓勵您在自己的 Android 應用程式中將其用作 REST 客戶端。請檢視下面的使用示例
RestTemplate restTemplate = new RestTemplate(new CommonsClientHttpRequestFactory());
Event event = restTemplate.getForObject("https://myapp.com/event/{name}", Event.class, "springone2gx");
在未來的里程碑版本中,您可以期待 Spring Framework 的更多功能在 Android 環境中得到支援,例如 Spring Security OAuth 客戶端。
最好的入門方法是在您自己的本地開發環境中親自體驗 Greenhouse 應用程式。作為參考,Greenhouse 使用 Spring Mobile 和 Spring Android 專案,以及 Spring MVC、Security、Social 和 Integration。 專案頁面提供了一份指南,向您展示如何在幾分鐘內讓 Web 應用程式、iPhone 客戶端和 Android 客戶端都在您的本地環境中執行。
如果您對功能、路線圖有疑問,或者只想與開發團隊進行討論,請訪問我們的社群論壇。我們重視您的反饋。
我對我們正在進行的所有新舉措感到非常興奮,尤其是在社交和移動領域所做的工作。這些專案的第一個里程碑只是一個開始。我鼓勵您參與對您有用的專案,並幫助我們盡最大努力使其達到最佳狀態。