portlet

介绍

由于世界仍在Java的掌控之中,因此我们经常定义所谓的基于组件的平台 。 我在2000年拥有OpenUSS(开放大学支持系统)的经验。 当时我有一个想法,就是开发一个可以使用组件体系结构和J2EE技术​​( OpenUSS Component Architecture )进行扩展的平台。 一段时间后,我们看到了门户和Portlet技术的诞生。 每个人都试图构建可轻松安装在基于Java的门户服务器中的portlet。 您还记得所有这些门户网站,例如Apache Jetspeed,Liferay,JBoss Portal,IBM Webshepe Portal等吗?

在门户浪潮之后,出现了OpenSocial小工具 ,该小工具不仅为Java指定,而且通常可用于不同的技术实现。 它使用完全独立于Java的HTMLJavaScriptREST 。 Apache Shindig是OpenSocial小工具容器的开源实现。 OpenSocial小工具还是iGoogle,Orkut,MySpace,XING和StudiVZ的主要技术。 使用OpenSocial,您可以通过两种不同的方式集成Web应用程序 。

如今,您仍然拥有诸如Portal,Portlet和OpenSocial小工具之类的技术,但是它们不再具有吸引力。 iGoogle已死, 没有人愿意在新的Web应用程序中使用门户和Portlet技术 。 如今,所有重要的Web应用程序都不再使用这些门户,Portlet和小工具。 这些技术的增长肯定会降为零 。

平台

如今, 平台通常由两个元素组成:

  • 适用于网络浏览器的Web应用程序 :今天,它仍然是使用最多的应用程序。 笔记本电脑,台式机,平板电脑和智能手机用户使用这种类型的应用程序。
  • 本机应用程序的平板电脑,智能手机和穿戴式:只有在少数情况下,你仍然需要台式机应用程序和笔记本电脑作为web应用是用于该用途的情况一天比一天好。 当今,针对智能手机,平板电脑和可穿戴设备的最具针对性的平台是AndroidiOS

让我们详细看一下这两个元素。

网络应用

如上所述,我们不再需要那些门户,portlet和小工具。 我们是否还在寻找基于组件的平台? 我们是否仍然需要遵循以下要求,而这些要求通常是通过使用门户网站,Portlet和小工具来解决的 ?

  • 汇总内容和应用
  • 跨应用程序集成
  • 提供统一的用户界面
  • 支持统一的Web应用程序开发平台
  • 个性化内容和服务
  • 部署用于发布动态页面的框架

答案是肯定的,但主要重点转移到了不同​​领域 。 Web应用程序开发的新趋势是所谓的渐进式Web应用程序 (PWA)。 今天更重要的是集中精力于用户体验,而不是Web应用程序本身 。 以下是渐进式Web应用程序的定义 (摘自Google Developers Code Lab):

  • 渐进式–适用于每个用户,无论浏览器选择如何。
  • 响应式–适合任何外形:台式机,手机和平板电脑。
  • 独立的连接性–增强了服务人员的能力,使其可以离线或在低质量的网络上工作。
  • 类似于本机应用程序–通过应用程序风格的交互和导航,用户感觉就像一个应用程序。
  • 新鲜-由于服务人员的更新过程,始终保持最新。
  • 安全-通过HTTPS提供服务,以防止监听并确保内容不被篡改。
  • 可发现–由于W3C清单和服务工作者注册范围而可识别为“应用程序”,从而使搜索引擎可以找到它。
  • 可重新参与–通过推送通知等功能使重新参与变得容易。
  • 可安装–允许用户在主屏幕上“保留”他们认为最有用的应用,而无需麻烦应用商店。
  • 可链接–通过URL轻松共享,不需要复杂的安装。

因此,主要重点

  • 门户网站,它被定义portlet和小工具 ,使企业的寿命(交付的门户网站,门户,小工具)和开发人员 (其中写门户网站,门户,小工具), 易于
  • 渐进式Web应用程序 ,使用户感到高兴。

这并不意味着使用渐进式Web应用程序我们就无法交付上述要求。 让我们详细了解所有需求点。
 

(1)汇总内容和应用程序,并跨应用程序进行集成

使用渐进式Web应用程序,情况看起来会有所不同。 您将不会使用Portlet进行这样的集成。 相反,它将使用相同的工具栏将许多Web应用程序集成在一起,并且每个Web应用程序都像独立应用程序一样工作。 这是一个比较。

门户和Portlet集成:带有门户和Portlet的netvibes

在Portal和Portlet集成中,每个Portlet都可以作为单独的Web应用最大化。

与Google Web Apps进行渐进式Web Apps集成:Google+,收件箱,搜索等。

在Google将其关闭之前,我是iGoogle(来自Google的OpenSocial Gadgets解决方案)的愉快用户。 一开始我以为我需要像netvibes一样寻找替代品。 最后,我一点都不会错过。 如果我需要获取信息,则最需要全屏模式的信息 。 因此,最后,我总是需要一个整体的Web应用程序, 而不仅是一个小Portlet 。在渐进式Web Apps集成中,每个图标都定义了一个Web应用程序,它将作为独立的Web应用程序单独打开,以遵循Native的规则。 类似于应用程序

(2)提供统一的用户界面

两种类型都可以支持统一的用户界面。 渐进式Web应用程序使用常见的UI模型,例如Google Material Design或Bootstrap 。 Portal,Portlet和小工具大多具有使用Portal Container中的外观的机制。

(3)支持统一的Web应用开发平台

这是渐进式Web应用发挥作用的地方。 只要该Web应用程序使用HTMLJavaScript,CSSREST ,就可以在不同的技术堆栈(如Java,PHP,JavaScript等)中实现。 由于在这样的渐进式Web应用程序中没有任何“门户容器”,因此您可以垂直使用所选的技术堆栈 。 而门户和Portlet部署是基于门户容器的 。 因此,如果将Tomcat用作容器,则必须将Portlet部署在该容器中。 当然,您可以拨打远程服务电话,但这不是标准情况。

(4)个性化内容和服务

这是Portlet展示其强大特性的地方。 您可以根据需要关闭和打开portlet。 如果您在上方看到Google工具栏,则还可以个性化内容。 因此,在这种情况下,渐进式Web应用程序可以通过其Web应用程序的个性化设计执行相同的操作。
 

(5)部署发布动态页面的框架

这也可能与这两种类型和趋势去微服务 。

总结来说,您仍然可以使用Progressive Web Apps满足上述要求。 此外,您可以使用标准的Web组件构建基于组件的Web应用程序。 可以在此处看到渐进式Web应用程序的一些实际使用案例:

  • Flipkart:Flipkart上的渐进式Web应用程序
  • 柏林航空:柏林航空的渐进式Web应用程序

本机应用

如果没有照顾最常用的客户端(手机和平板电脑)的平台策略,那就是失败。 以下是当今客户端设备及其操作系统的类型:

  • 装有Windows,Linux和MacOS的台式机笔记本电脑 :在大多数情况下,您只需要带有Web应用程序的Web浏览器(Firefox,Internet Explorer,Edge,Chrome和Safari)。 无需为每个操作系统构建本机应用程序,只需使用Progressive Web Apps 。 以下是一些事实:

    • Google停止了Picasa客户端应用的开发,并使用Google相册将所有内容移至网络 。
  • 装有Android和iOS的平板电脑 :目前,您需要为Android和iOS构建本机应用程序。 但是在许多情况下,带有渐进式Web应用程序的Web应用程序可能是解决方案,因为Web应用程序可以执行与本机应用程序几乎相同的功能,尤其是随着HTML5的到来。
  • 具有Android和iOS的手机 :如目前在平板电脑区域中一样,您需要为Android和iOS构建本机应用程序。 由于屏幕大小,我们可能需要开发本机应用程序。 但是渐进式Web应用每天都在做得更好(请参见下面的图片以及上面的Flipkart和Air Berlin的两个示例)。
  • 配备Android Wear,Android Auto,Android TV,watchOS,Apple CarPlay和tvOS的可穿戴设备, 小工具, 汽车和 电视 :这是您必须编写本机应用程序的区域,因为较小的设备将无法运行网络浏览器。

具有材质设计的渐进式Web应用程序

Java实现技术

为不同的目标系统开发应用程序非常昂贵。 渐进式Web应用程序的想法很棒,因为它使您无需为每个操作系统编写本机应用程序。 但仍然在某些情况下(至少在当前情况下),我们需要构建本机应用程序。 为此目的并节省资源,有所谓的“ 混合应用程序开发” 。 有很多带有HTML用户界面的混合应用程序框架 。

这种技术的问题在于HTML UI并不是真正的原生。 因此,存在第二种类型的混合应用程序 ,即具有本机UI的混合应用程序框架 。 在这种情况下,您仍将在每个操作系统中使用本机UI,并使用例如相同的编程语言来覆盖其余内容。 由于Java仍然是排名第一的编程语言 ,因此明智的做法是将平台策略基于Java。

比较渐进式Web应用程序–具有HTML UI的混合应用程序–具有本机UI的混合应用程序

下图显示了运行时渐进式Web应用程序具有HTML UI的混合应用程序和本机UI之间的比较。

Java为我们提供什么样的工具和产品来实现上述技术?

(1)基础

  • 用于微服务架构的 Spring Boot和Spring Cloud 这些开源产品确实很成熟,可以立即投入生产且易于使用。

(2)基于渐进式Web应用程序的Web应用程序

  • 对于这种类型的Web应用程序,Java领域没有很多替代品。 像JSF或Grails这样的框架并不是真正能够实现此功能的,因为您需要必须在浏览器端运行JavaScript。 使用纯Java而不是通过AngularJS之类的框架在JavaScript中增加复杂性可能会更好。 为此,您可以选择以下产品:

    • GWT –这仍然是从Java到JavaScript的最佳开源转译器。
  • GWT是该类别中最成熟的产品 ,而Google在许多 产品中都使用GWT 。 GWT可以与以下UI框架集成:
    • 引导程序( GWTBootstrap3 ),
  • 这里有一系列最佳实践,介绍了如何使用GWT来实现Progressive Web Apps 。因此,您可以立即使用GWT用Java完全编写Progressive Web Apps。

(3)具有HTML UI的本机应用程序

  • 在Android和iOS的外观上使用mGWT和mGWT PhoneGap :使用相同的Java,GWT和PhoneGap / Apache Cordova技术,您可以使用HTML UI编写本机应用程序。 您可能应该使用Progressive Web Apps技术,而不是使用该技术,因为HTML UI看起来并不是本机的。 渐进式Web应用程序是相同的,您可以为Web和移动设备编写一次。

(4)具有本机UI的本机应用程序

  • 在Android中,您可以仅使用Java来实现本机UI,不需要任何特殊的解决方法。
  • 在iOS中,您需要使用Objective-C来实现本机UI。 使用诸如J2ObjC (Java到Objective-C的编译器)之类的开源产品将极大地帮助重用Java代码。
  • 像Google Inbox这样的产品使用GWT和J2ObjC在同一时间跨操作系统(Web,Android和iOS)提供相同的功能。

平台策略

那么,我们今天如何定义平台策略? 以下是我的总结:

(1)基础

  • 如果您使用Java作为编程语言的Spring引导Spring云为您的microService archtiecture实现。 但是最后,您可以使用不同的实现技术,例如Java,.NET和其他。 在下一点中使用这些标准很重要。

(2)服务器端和业务逻辑

  • 使用RESTfulJSON进行mircoservices之间的通信。
  • 在此平台策略中,必须使用OpenId ConnectOAuth 2进行身份验证和单点登录,以便您能够将所有微服务与所有不同的实现技术集成在一起。

(3)用户界面

  • Portal和Portlet已死 。 将渐进式Web应用程序用于任何可能的应用程序。 如果您需要集成许多Progressive Web Apps,则只需使用集成或工具栏,就像Google对其产品所做的操作一样(请参见上面的Google+图片)。
  • 如果需要本机应用程序,请使用本机UI而不是HTML UI的混合应用程序框架来构建它们。
  • 以下是一些开源产品 ,它们使您在使用Java中的Native UI构建Progressive Web Apps和Native Apps时更加轻松: GWTJ2ObjC 。 考虑使用它们可以提高生产率和上市时间。

当今的平台策略不需要将每个单独的实现都基于相同的语言,即使您的团队中很少有人强调相同的语言,并且Java仍然是可用的顶级编程语言。 本文结尾的下一张图片显示了基于Java的技术平台的最新实现技术。

基于Java的平台实现技术

翻译自: https://www.javacodegeeks.com/2016/09/platform-strategy-portlets-opensocial-gadgets-progressive-web-apps-state-art.html

portlet

portlet_平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术相关推荐

  1. 平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术

    介绍 由于世界仍在Java的掌控之中,因此我们经常定义所谓的基于组件的平台 . 我在2000年的OpenUSS(开放大学支持系统)方面拥有这一经验. 当时我有一个想法,就是开发一个可以使用组件体系结构 ...

  2. 小程序动画从头开始_渐进式Web应用程序102:从头开始构建渐进式Web应用程序

    小程序动画从头开始 We learnt about what is a Progressive Web App (PWA) in part 1. In this part, we are going ...

  3. Java Portlet 工具:将 Java Web 应用程序转换为自适型 Portlet--page1

    Java Portlet 工具:将 Java Web 应用程序转换为自适型 Portlet 作者 Andrew Lorek 05/30/2006 译者: 墩子 摘要 这篇文章介绍了如何将工作于门户以外 ...

  4. MFC自用小工具源码

    效果:快速打开计算机内常用的软件,功能,设置 // 自用小工具Dlg.cpp : 实现文件 // #include "stdafx.h" #include "自用小工具. ...

  5. tkintertools 模块实战一:任务清单小工具

    之前我自己写了一个 tkinter 模块的辅助模块 -- tkintertools,这次试着用这个模块开发了一款可以记录任务的小工具,应该会比较实用.tkinter 模块的最强辅助模块 -- tkin ...

  6. azure微软文字转语音小工具V1.3.2(ai智能配音,目前最好用)的使用说明和下载

    概括: azure微软文字转语音小工具是调用azure服务器的程序,可能是目前最好用的配音软件.其配音效果几乎与真人没有区别(非常仔细听可能有些许区别). 拥有12种热门配音声音,4男8女,可调整多种 ...

  7. 视频批量去片头片尾小工具源码分享

    视频批量去片头片尾小工具源码分享(基于FFmpeg视频流复制切割,快速无损) 开发环境Delphi2010,框架VGScene(新版本用FMX) 特点:直观的预览界面,秒级的微调定位,批量预设.单个微 ...

  8. 自己写的win10优化小工具

    话不多说,代码附上 #include<stdio.h> #include<stdlib.h> #include<Windows.h> #include<mat ...

  9. python小工具开发_使用Python制作一个桌面小工具

    今天,我们制作一个有意思的小工具,利用Python获取历史上的今天发生的事情. [分析] 个人总结了一下,"历史上的今天"有很多调用接口.有很多调用接口都是收费的或者就是免费但限制 ...

最新文章

  1. python兼职程序员工资一般多少-做Python程序员,工资一般多少?
  2. AndroidStudio3.4+Unity2018.3,导出JAR包给UNITY使用
  3. spring boot的hello world小实验
  4. android系统签名app自动更新,【Android 进阶】Apk 使用系统签名
  5. 进程调度rr算法java实现_Java实现进程调度算法(二) RR(时间片轮转)
  6. 如何用java输出方格_第三章 Java类基础知识作业之(输出5*5数字方格,打印星塔)...
  7. 从小白创建自己的CSND
  8. 新手初用mybatis
  9. 面经分享:美团面试也太难了,4面美团终成Offer
  10. 齐齐哈尔市全国计算机等级考试,2021年9月黑龙江省齐齐哈尔市全国计算机等级考试报名时间...
  11. 组合数有关的公式及常用求和【数学--排列组合】
  12. 网络安全用什么编程语言_网络安全的5种最佳编程语言
  13. 提取动漫视频里的BGM
  14. 深度学习框架PyTorch入门与实践:第八章 AI艺术家:神经网络风格迁移
  15. 荣耀v40轻奢版鸿蒙系统,差异化的生存策略:荣耀V40轻奢版有点东西
  16. CoffeeScript系列教程(一)—概述
  17. 网络安全学习--入侵检测和紧急响应
  18. 计算机考研视频哪个机构的好,计算机考研考点教学视频哪个好
  19. 解释 RESTful API
  20. 抖音视频怎么上推荐热门,如何免费提升抖音浏览量

热门文章

  1. 猜数(二分、线段树)
  2. NOI.AC#2144-子串【SAM,倍增】
  3. P4492-[HAOI2018]苹果树【dp】
  4. P4555-[国家集训队]最长双回文串【Manacher】
  5. 亿些模板【数论数学】
  6. P1040,jzoj1167-加分二叉树【树形dp】
  7. 【dfs】GCD与LCM(jzoj 1608)
  8. maven中scope属性的
  9. 业务库负载翻了百倍,我做了什么来拯救MySQL架构
  10. jsp页面中JSTL/EL标签引用java后台静态static字段的方法总结