portlet_平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术
portlet
介紹
由于世界仍在Java的掌控之中,因此我們經(jīng)常定義所謂的基于組件的平臺(tái) 。 我在2000年擁有OpenUSS(開(kāi)放大學(xué)支持系統(tǒng))的經(jīng)驗(yàn)。 當(dāng)時(shí)我有一個(gè)想法,就是開(kāi)發(fā)一個(gè)可以使用組件體系結(jié)構(gòu)和J2EE技術(shù)??( OpenUSS Component Architecture )進(jìn)行擴(kuò)展的平臺(tái)。 一段時(shí)間后,我們看到了門戶和Portlet技術(shù)的誕生。 每個(gè)人都試圖構(gòu)建可輕松安裝在基于Java的門戶服務(wù)器中的portlet。 您還記得所有這些門戶網(wǎng)站,例如Apache Jetspeed,Liferay,JBoss Portal,IBM Webshepe Portal等嗎?
在門戶浪潮之后,出現(xiàn)了OpenSocial小工具 ,該小工具不僅為Java指定,而且通常可用于不同的技術(shù)實(shí)現(xiàn)。 它使用完全獨(dú)立于Java的HTML , JavaScript和REST 。 Apache Shindig是OpenSocial小工具容器的開(kāi)源實(shí)現(xiàn)。 OpenSocial小工具還是iGoogle,Orkut,MySpace,XING和StudiVZ的主要技術(shù)。 使用OpenSocial,您可以通過(guò)兩種不同的方式集成Web應(yīng)用程序 。
如今,您仍然擁有諸如Portal,Portlet和OpenSocial小工具之類的技術(shù),但是它們不再具有吸引力。 iGoogle已死, 沒(méi)有人愿意在新的Web應(yīng)用程序中使用門戶和Portlet技術(shù) 。 如今,所有重要的Web應(yīng)用程序都不再使用這些門戶,Portlet和小工具。 這些技術(shù)的增長(zhǎng)肯定會(huì)降為零 。
平臺(tái)
如今, 平臺(tái)通常由兩個(gè)元素組成:
- 適用于網(wǎng)絡(luò)瀏覽器的Web應(yīng)用程序 :今天,它仍然是使用最多的應(yīng)用程序。 筆記本電腦,臺(tái)式機(jī),平板電腦和智能手機(jī)用戶使用這種類型的應(yīng)用程序。
- 本機(jī)應(yīng)用程序的平板電腦,智能手機(jī)和穿戴式:只有在少數(shù)情況下,你仍然需要臺(tái)式機(jī)應(yīng)用程序和筆記本電腦作為web應(yīng)用是用于該用途的情況一天比一天好。 當(dāng)今,針對(duì)智能手機(jī),平板電腦和可穿戴設(shè)備的最具針對(duì)性的平臺(tái)是Android和iOS 。
讓我們?cè)敿?xì)看一下這兩個(gè)元素。
網(wǎng)絡(luò)應(yīng)用
如上所述,我們不再需要那些門戶,portlet和小工具。 我們是否還在尋找基于組件的平臺(tái)? 我們是否仍然需要遵循以下要求,而這些要求通常是通過(guò)使用門戶網(wǎng)站,Portlet和小工具來(lái)解決的 ?
- 匯總內(nèi)容和應(yīng)用
- 跨應(yīng)用程序集成
- 提供統(tǒng)一的用戶界面
- 支持統(tǒng)一的Web應(yīng)用程序開(kāi)發(fā)平臺(tái)
- 個(gè)性化內(nèi)容和服務(wù)
- 部署用于發(fā)布動(dòng)態(tài)頁(yè)面的框架
答案是肯定的,但主要重點(diǎn)轉(zhuǎn)移到了不同??領(lǐng)域 。 Web應(yīng)用程序開(kāi)發(fā)的新趨勢(shì)是所謂的漸進(jìn)式Web應(yīng)用程序 (PWA)。 今天更重要的是集中精力于用戶體驗(yàn),而不是Web應(yīng)用程序本身 。 以下是漸進(jìn)式Web應(yīng)用程序的定義 (摘自Google Developers Code Lab):
- 漸進(jìn)式–適用于每個(gè)用戶,無(wú)論瀏覽器選擇如何。
- 響應(yīng)式–適合任何外形:臺(tái)式機(jī),手機(jī)和平板電腦。
- 獨(dú)立的連接性–增強(qiáng)了服務(wù)人員的能力,使其可以離線或在低質(zhì)量的網(wǎng)絡(luò)上工作。
- 類似于本機(jī)應(yīng)用程序–通過(guò)應(yīng)用程序風(fēng)格的交互和導(dǎo)航,用戶感覺(jué)就像一個(gè)應(yīng)用程序。
- 新鮮-由于服務(wù)人員的更新過(guò)程,始終保持最新。
- 安全-通過(guò)HTTPS提供服務(wù),以防止監(jiān)聽(tīng)并確保內(nèi)容不被篡改。
- 可發(fā)現(xiàn)–由于W3C清單和服務(wù)工作者注冊(cè)范圍而可識(shí)別為“應(yīng)用程序”,從而使搜索引擎可以找到它。
- 可重新參與–通過(guò)推送通知等功能使重新參與變得容易。
- 可安裝–允許用戶在主屏幕上“保留”他們認(rèn)為最有用的應(yīng)用,而無(wú)需麻煩應(yīng)用商店。
- 可鏈接–通過(guò)URL輕松共享,不需要復(fù)雜的安裝。
因此,主要重點(diǎn)從 :
- 門戶網(wǎng)站,它被定義portlet和小工具 ,使企業(yè)的壽命(交付的門戶網(wǎng)站,門戶,小工具)和開(kāi)發(fā)人員 (其中寫門戶網(wǎng)站,門戶,小工具), 更易于
- 漸進(jìn)式Web應(yīng)用程序 ,使用戶感到高興。
這并不意味著使用漸進(jìn)式Web應(yīng)用程序我們就無(wú)法交付上述要求。 讓我們?cè)敿?xì)了解所有需求點(diǎn)。
?
(1)匯總內(nèi)容和應(yīng)用程序,并跨應(yīng)用程序進(jìn)行集成
使用漸進(jìn)式Web應(yīng)用程序,情況看起來(lái)會(huì)有所不同。 您將不會(huì)使用Portlet進(jìn)行這樣的集成。 相反,它將使用相同的工具欄將許多Web應(yīng)用程序集成在一起,并且每個(gè)Web應(yīng)用程序都像獨(dú)立應(yīng)用程序一樣工作。 這是一個(gè)比較。
門戶和Portlet集成:帶有門戶和Portlet的netvibes
在Portal和Portlet集成中,每個(gè)Portlet都可以作為單獨(dú)的Web應(yīng)用最大化。
與Google Web Apps進(jìn)行漸進(jìn)式Web Apps集成:Google+,收件箱,搜索等。
在Google將其關(guān)閉之前,我是iGoogle(來(lái)自Google的OpenSocial Gadgets解決方案)的愉快用戶。 一開(kāi)始我以為我需要像netvibes一樣尋找替代品。 最后,我一點(diǎn)都不會(huì)錯(cuò)過(guò)。 如果我需要獲取信息,則最需要全屏模式的信息 。 因此,最后,我總是需要一個(gè)整體的Web應(yīng)用程序, 而不僅是一個(gè)小Portlet 。在漸進(jìn)式Web Apps集成中,每個(gè)圖標(biāo)都定義了一個(gè)Web應(yīng)用程序,它將作為獨(dú)立的Web應(yīng)用程序單獨(dú)打開(kāi),以遵循Native的規(guī)則。 類似于應(yīng)用程序 。
(2)提供統(tǒng)一的用戶界面
兩種類型都可以支持統(tǒng)一的用戶界面。 漸進(jìn)式Web應(yīng)用程序使用常見(jiàn)的UI模型,例如Google Material Design或Bootstrap 。 Portal,Portlet和小工具大多具有使用Portal Container中的外觀的機(jī)制。
(3)支持統(tǒng)一的Web應(yīng)用開(kāi)發(fā)平臺(tái)
這是漸進(jìn)式Web應(yīng)用發(fā)揮作用的地方。 只要該Web應(yīng)用程序使用HTML , JavaScript,CSS和REST ,就可以在不同的技術(shù)堆棧(如Java,PHP,JavaScript等)中實(shí)現(xiàn)。 由于在這樣的漸進(jìn)式Web應(yīng)用程序中沒(méi)有任何“門戶容器”,因此您可以垂直使用所選的技術(shù)堆棧 。 而門戶和Portlet部署是基于門戶容器的 。 因此,如果將Tomcat用作容器,則必須將Portlet部署在該容器中。 當(dāng)然,您可以撥打遠(yuǎn)程服務(wù)電話,但這不是標(biāo)準(zhǔn)情況。
(4)個(gè)性化內(nèi)容和服務(wù)
這是Portlet展示其強(qiáng)大特性的地方。 您可以根據(jù)需要關(guān)閉和打開(kāi)portlet。 如果您在上方看到Google工具欄,則還可以個(gè)性化內(nèi)容。 因此,在這種情況下,漸進(jìn)式Web應(yīng)用程序可以通過(guò)其Web應(yīng)用程序的個(gè)性化設(shè)計(jì)執(zhí)行相同的操作。
?
(5)部署發(fā)布動(dòng)態(tài)頁(yè)面的框架
這也可能與這兩種類型和趨勢(shì)去微服務(wù) 。
總結(jié)來(lái)說(shuō),您仍然可以使用Progressive Web Apps滿足上述要求。 此外,您可以使用標(biāo)準(zhǔn)的Web組件構(gòu)建基于組件的Web應(yīng)用程序。 可以在此處看到漸進(jìn)式Web應(yīng)用程序的一些實(shí)際使用案例:
- Flipkart:Flipkart上的漸進(jìn)式Web應(yīng)用程序
- 柏林航空:柏林航空的漸進(jìn)式Web應(yīng)用程序
本機(jī)應(yīng)用
如果沒(méi)有照顧最常用的客戶端(手機(jī)和平板電腦)的平臺(tái)策略,那就是失敗。 以下是當(dāng)今客戶端設(shè)備及其操作系統(tǒng)的類型:
- 裝有Windows,Linux和MacOS的臺(tái)式機(jī)和筆記本電腦 :在大多數(shù)情況下,您只需要帶有Web應(yīng)用程序的Web瀏覽器(Firefox,Internet Explorer,Edge,Chrome和Safari)。 無(wú)需為每個(gè)操作系統(tǒng)構(gòu)建本機(jī)應(yīng)用程序,只需使用Progressive Web Apps 。 以下是一些事實(shí):
- Google停止了Picasa客戶端應(yīng)用的開(kāi)發(fā),并使用Google相冊(cè)將所有內(nèi)容移至網(wǎng)絡(luò) 。
- 裝有Android和iOS的平板電腦 :目前,您需要為Android和iOS構(gòu)建本機(jī)應(yīng)用程序。 但是在許多情況下,帶有漸進(jìn)式Web應(yīng)用程序的Web應(yīng)用程序可能是解決方案,因?yàn)閃eb應(yīng)用程序可以執(zhí)行與本機(jī)應(yīng)用程序幾乎相同的功能,尤其是隨著HTML5的到來(lái)。
- 具有Android和iOS的手機(jī) :如目前在平板電腦區(qū)域中一樣,您需要為Android和iOS構(gòu)建本機(jī)應(yīng)用程序。 由于屏幕大小,我們可能需要開(kāi)發(fā)本機(jī)應(yīng)用程序。 但是漸進(jìn)式Web應(yīng)用每天都在做得更好(請(qǐng)參見(jiàn)下面的圖片以及上面的Flipkart和Air Berlin的兩個(gè)示例)。
- 配備Android Wear,Android Auto,Android TV,watchOS,Apple CarPlay和tvOS的可穿戴設(shè)備, 小工具, 汽車和 電視 :這是您必須編寫本機(jī)應(yīng)用程序的區(qū)域,因?yàn)檩^小的設(shè)備將無(wú)法運(yùn)行網(wǎng)絡(luò)瀏覽器。
具有材質(zhì)設(shè)計(jì)的漸進(jìn)式Web應(yīng)用程序
Java實(shí)現(xiàn)技術(shù)
為不同的目標(biāo)系統(tǒng)開(kāi)發(fā)應(yīng)用程序非常昂貴。 漸進(jìn)式Web應(yīng)用程序的想法很棒,因?yàn)樗鼓鸁o(wú)需為每個(gè)操作系統(tǒng)編寫本機(jī)應(yīng)用程序。 但仍然在某些情況下(至少在當(dāng)前情況下),我們需要構(gòu)建本機(jī)應(yīng)用程序。 為此目的并節(jié)省資源,有所謂的“ 混合應(yīng)用程序開(kāi)發(fā)” 。 有很多帶有HTML用戶界面的混合應(yīng)用程序框架 。
這種技術(shù)的問(wèn)題在于HTML UI并不是真正的原生。 因此,存在第二種類型的混合應(yīng)用程序 ,即具有本機(jī)UI的混合應(yīng)用程序框架 。 在這種情況下,您仍將在每個(gè)操作系統(tǒng)中使用本機(jī)UI,并使用例如相同的編程語(yǔ)言來(lái)覆蓋其余內(nèi)容。 由于Java仍然是排名第一的編程語(yǔ)言 ,因此明智的做法是將平臺(tái)策略基于Java。
比較漸進(jìn)式Web應(yīng)用程序–具有HTML UI的混合應(yīng)用程序–具有本機(jī)UI的混合應(yīng)用程序
下圖顯示了運(yùn)行時(shí)漸進(jìn)式Web應(yīng)用程序 , 具有HTML UI的混合應(yīng)用程序和本機(jī)UI之間的比較。
Java為我們提供什么樣的工具和產(chǎn)品來(lái)實(shí)現(xiàn)上述技術(shù)?
(1)基礎(chǔ)
- 用于微服務(wù)架構(gòu)的 Spring Boot和Spring Cloud 。 這些開(kāi)源產(chǎn)品確實(shí)很成熟,可以立即投入生產(chǎn)且易于使用。
(2)基于漸進(jìn)式Web應(yīng)用程序的Web應(yīng)用程序
- 對(duì)于這種類型的Web應(yīng)用程序,Java領(lǐng)域沒(méi)有很多替代品。 像JSF或Grails這樣的框架并不是真正能夠?qū)崿F(xiàn)此功能的,因?yàn)槟枰仨氃跒g覽器端運(yùn)行JavaScript。 使用純Java而不是通過(guò)AngularJS之類的框架在JavaScript中增加復(fù)雜性可能會(huì)更好。 為此,您可以選擇以下產(chǎn)品:
- GWT –這仍然是從Java到JavaScript的最佳開(kāi)源轉(zhuǎn)譯器。
- GWT是該類別中最成熟的產(chǎn)品 ,而Google在許多 產(chǎn)品中都使用GWT 。 GWT可以與以下UI框架集成:
- 引導(dǎo)程序( GWTBootstrap3 ),
- 這里有一系列最佳實(shí)踐,介紹了如何使用GWT來(lái)實(shí)現(xiàn)Progressive Web Apps 。因此,您可以立即使用GWT用Java完全編寫Progressive Web Apps。
(3)具有HTML UI的本機(jī)應(yīng)用程序
- 在Android和iOS的外觀上使用mGWT和mGWT PhoneGap :使用相同的Java,GWT和PhoneGap / Apache Cordova技術(shù),您可以使用HTML UI編寫本機(jī)應(yīng)用程序。 您可能應(yīng)該使用Progressive Web Apps技術(shù),而不是使用該技術(shù),因?yàn)镠TML UI看起來(lái)并不是本機(jī)的。 漸進(jìn)式Web應(yīng)用程序是相同的,您可以為Web和移動(dòng)設(shè)備編寫一次。
(4)具有本機(jī)UI的本機(jī)應(yīng)用程序
- 在Android中,您可以僅使用Java來(lái)實(shí)現(xiàn)本機(jī)UI,不需要任何特殊的解決方法。
- 在iOS中,您需要使用Objective-C來(lái)實(shí)現(xiàn)本機(jī)UI。 使用諸如J2ObjC (Java到Objective-C的編譯器)之類的開(kāi)源產(chǎn)品將極大地幫助重用Java代碼。
- 像Google Inbox這樣的產(chǎn)品使用GWT和J2ObjC在同一時(shí)間跨操作系統(tǒng)(Web,Android和iOS)提供相同的功能。
平臺(tái)策略
那么,我們今天如何定義平臺(tái)策略? 以下是我的總結(jié):
(1)基礎(chǔ)
- 如果您使用Java作為編程語(yǔ)言的Spring引導(dǎo)和Spring云為您的microService archtiecture實(shí)現(xiàn)。 但是最后,您可以使用不同的實(shí)現(xiàn)技術(shù),例如Java,.NET和其他。 在下一點(diǎn)中使用這些標(biāo)準(zhǔn)很重要。
(2)服務(wù)器端和業(yè)務(wù)邏輯
- 使用RESTful和JSON進(jìn)行mircoservices之間的通信。
- 在此平臺(tái)策略中,必須使用OpenId Connect和OAuth 2進(jìn)行身份驗(yàn)證和單點(diǎn)登錄,以便您能夠?qū)⑺形⒎?wù)與所有不同的實(shí)現(xiàn)技術(shù)集成在一起。
(3)用戶界面
- Portal和Portlet已死 。 將漸進(jìn)式Web應(yīng)用程序用于任何可能的應(yīng)用程序。 如果您需要集成許多Progressive Web Apps,則只需使用集成或工具欄,就像Google對(duì)其產(chǎn)品所做的操作一樣(請(qǐng)參見(jiàn)上面的Google+圖片)。
- 如果需要本機(jī)應(yīng)用程序,請(qǐng)使用本機(jī)UI而不是HTML UI的混合應(yīng)用程序框架來(lái)構(gòu)建它們。
- 以下是一些開(kāi)源產(chǎn)品 ,它們使您在使用Java中的Native UI構(gòu)建Progressive Web Apps和Native Apps時(shí)更加輕松: GWT和J2ObjC 。 考慮使用它們可以提高生產(chǎn)率和上市時(shí)間。
當(dāng)今的平臺(tái)策略不需要將每個(gè)單獨(dú)的實(shí)現(xiàn)都基于相同的語(yǔ)言,即使您的團(tuán)隊(duì)中很少有人強(qiáng)調(diào)相同的語(yǔ)言,并且Java仍然是可用的頂級(jí)編程語(yǔ)言。 本文結(jié)尾的下一張圖片顯示了基于Java的技術(shù)平臺(tái)的最新實(shí)現(xiàn)技術(shù)。
基于Java的平臺(tái)實(shí)現(xiàn)技術(shù)
翻譯自: https://www.javacodegeeks.com/2016/09/platform-strategy-portlets-opensocial-gadgets-progressive-web-apps-state-art.html
portlet
總結(jié)
以上是生活随笔為你收集整理的portlet_平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ddos是什么(ddos谁发明的)
- 下一篇: Apache NetBeans?