Uniapp目前比较成熟,而且用的是Vue语法,学习成本比较低,而且行业里面用的也比较广泛,而Flutter的话,学习成本略高,因为要学习新的语言,还有就是目前生态不是特别完备,等他再发展发展吧。黑马程序员官网有成套免费视频哦,有什么不懂的可以直接过去学习。您的采纳是对我成长的鞭策
10年积累的成都网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有江安免费网站建设让你可以放心的选择与我们合作。
前言
为什么跨平台是发展趋势?
同一个应用,各个“端”独立开发,不仅开发周期长,而且人员成本高。同时,作为技术人员,也不应该满足于这种重复、低能的工作状态。在这样的形势下,跨平台的技术方案也受到越来越多人和企业的关注。
本篇文章我将从原理、优缺点等方面为大家分享跨平台技术
一. H5
说到跨平台,没人不知道H5。不管是在Mac、Windows、Linux、iOS、Android还是其他平台,只要给一个浏览器,连“月球”上它都能跑。
1.浏览器架构
下面,我们来看看让H5如此横行霸道的浏览器的架构:
浏览器由以上7个部分组成,而“渲染引擎”是性能优化的重中之重,一起了解其中的渲染原理。
2.渲染引擎原理
不同的浏览器内核不同,渲染过程会不太一样,但主要流程还是一致的。
分为下面6步骤:
从以上6步,我们可以总结渲染优化的要点:
以上就是浏览器端的内容。但H5作为跨平台技术的载体,是如何与不同平台的App进行交互的呢?这时候JSBridge就该出场了。
3.JSBridge原理
JSBridge,顾名思义,是JS和Native之间的桥梁,用来进行JS和Native之间的通信。
通信分为以下两个维度:
那么App内加载H5的过程是什么样的呢?
4.App打开H5过程
打开H5分为4个阶段:
这四步,对应的过程如上图所以,我们可以针对性的做性能优化。
5.优缺点分析
下面,我们进行H5的优缺点分析:
优点
缺点
虽然H5目前还存在不足,但随着PWA、WebAssembly等技术的进步,相信H5在未来能够得到越来也好的发展。
二.小程序
2018年是微信小程序飞速发展的一年,19年,各大厂商快速跟进,已经有了很大的影响力。下面,我们以微信小程序为例,分析小程序的技术架构。
小程序跟H5一样,也是基于Webview实现。但它包含View视图层、App Service逻辑层两部分,分别独立运行在各自的WebView线程中。
1.View
可以理解为h5的页面,提供UI渲染。由WAWebview.js来提供底层的功能,具体如下:
每个窗口都有一个独立的WebView进程,因此微信限制不能打开超过5个层级的页面来保障用户体验。
2. App Service
提供逻辑处理、数据请求、接口调用。由WAService.js来提供底层的功能,具体如下:
运行环境:
仅有一个WebView进程
3.View App Service通信
视图层和逻辑层通过系统层的JSBridage进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层将触发的事件通知到逻辑层进行业务处理。
4. 优缺点分析
优点
缺点
既然WebView性能不佳,那有没有更好的方案呢?下面我们看看React Native。
三.React Native
RN的理念是在不同平台上编写基于React的代码,实现Learn once, write anywhere。
Virtual DOM在内存中,可以通过不同的渲染引擎生成不同平台下的UI,JS和Native之间通过Bridge通信
1.React Native 工作原理
在 React 框架中,JSX 源码通过 React 框架最终渲染到了浏览器的真实 DOM 中,而在 React Native 框架中,JSX 源码通过 React Native 框架编译后,与Native原生的UI组件进行映射,用原生代替DOM元素来渲染,在UI渲染上非常接近Native App。
2.React Native 与Native平台通信
3.优缺点分析
优点
缺点
4.RN展望
虽然RN还存在不足,但RN新版本已经做了如下改进,并且RN团队也在积极准备大版本重构,能否成为开发者们所信赖的跨平台方案,让我们拭目以待。
既然React Native在渲染方面还摆脱不了原生,那有没有一种方案是直接操控GPU,自制引擎渲染呢,我们终于迎来了Flutter!
四.Flutter
Flutter是Google开发的一套全新的跨平台、开源UI框架,支持iOS、Android系统开发,并且是未来新操作系统Fuchsia的默认开发套件。渲染引擎依靠跨平台的Skia图形库来实现,依赖系统的只有图形绘制相关的接口,可以在最大程度上保证不同平台、不同设备的体验一致性,逻辑处理使用支持AOT的Dart语言,执行效率也比JavaScript高得多。
1.Flutter架构原理
2.Dart优势
很多人会好奇,为什么Flutter要用Dart,而不是用JavaScript开发,这里列下Dart的优势
3.优缺点分析
优点
缺点
跨终端移动开发是近期准备总结的一个主题,作为这一系列的开始,首先简单说说基于WebView的Hybrid混合开发模式。
有过混合应用开发经验的同学,对基于WebView的Hybrid开发模式应该不会陌生。借助于原生端各平台的WebView组件,可以实现Native和JavaScript的双向通信,从而将Web App与Mobile App融合起来,开启混合开发的新模式。
基于WebView的Hybrid开发模式到如今已经非常成熟,不再是一个实验性新技术,而是广泛应用在各大厂商的平台型应用如微信、手Q中。
JSBridge作为连接Native和JavaScript的桥梁,是基于WebView的Hybrid开发模式中的关键点。
在了解其通信原理后,再来看JSBridge究竟是什么。从前端角度来看,可能会把JSBridge理解为业务开发过程中,以全局变量注入到WebView中,帮助调用原生API的JavaScript工具库。这样的理解不够准确,按照我的理解,JSBridge不是一个标准的规范,基于原生系统为WebView组件提供的能力,已经可以建立起WebView JavaScript bridge,即使不再做更高程度的封装,也可以完成从Native到JavaScript的双向通信了。
我们所说的JSBridge,是对底层通道的抽象封装,这一过程包括了原生和JavaScript两侧内容,在原生端需要考虑系统API差异,对上层调用提供统一接口,在JavaScript端需要考虑调用方式,请求管理等内容。JSBridge的设计实现已经是成熟技术了,其设计可以参考 In-depth Profiling of JSBridge 、 Hybrid APP架构设计思路 ,一个安卓端完整JSBridge实现可以参考 JsBridge实现 。
目前,基于WebView的Hybrid开发模式非常成熟,广泛应用于各类平台型App中。实现一个完善的JSBridge是在现有App中集成使用Hybrid开发模式的基础,在完成这一基础设施建设后,大家继续在各个方向深挖,在不同的维度不断优化性能和体验。
多数App的Hybrid部分做到上面部分,已经有了还不错的体验。在我的了解中,空间团队在上面基础上继续优化给出的是当前做的更好的方案。其主要流程如下图所示,详细内容可以参考 QQ空间前端工程师如何做首屏优化
除了在现有App中集成使用这一开发模式,还可以使用这一技术开发独立App。早期的PhoneGap、Cordova、现在的Ionic,是这一领域较为知名的开发框架。
我司前端技术栈曾以Angular为主,一些App也由前端团队基于Angular技术栈选型Ionic。初入团队曾维护过基于Angular 1.x的Ionic App,用于我司投资顾问服务客户的以IM为主、综合一些其他业务,可以算一个比较复杂的应用。
前端技术背景的同学,采用Ionic框架开发App的学习成本不高。开发过程中仍在沿用前端技术,写的仍是Web App,跑在原生WebView容器中。采用Ionic提供的组件库,可以快速搭建项目界面。其扩展原生的机制也比较方便,如有原生能力的需求,并且没有现成实现的,可以自行封装使用,不过这个过程就需要原生开发同学的参与了。在我们的上述App开发中,主要是安卓端消息推送模块由原生开发同学提供了支持,其余对原生能力的需求如拍照、相册访问等常见需求,都有现成方案。
然而,采用Ionic完成上述应用,也有明显不足的地方。首先是聊天列表方面,我们知道,如微信和QQ聊天窗口,这是一个异构的无限滚动长列表,在进入聊天界面时,一般只加载最近的一屏聊天数据,然后通过滚动加载历史消息。在原生端完成这一需求有各种常见手段,而仅靠Web端技术,在各种折腾后,效果都不尽如人意。其次是动画,这里的动画包括了换页动画和其他动画,流畅程度一般。最后是前端开发通病,要处理浏览器兼容性问题,crosswalk只是一个理论解决方案,其体积限制了几乎不会被采用。
Ionic不断迭代,新的版本中依赖新的Angular。新的Angular与Angular 1.x开发体验已经完全不同,如果你还不了解,可以阅读我们团队书籍 揭秘Angular 2 。新的Ionic的开发体验,相比以往也有提升,在其工具链中,提供了拖拽式项目生成工具
同时,Ionic pro提供的开发者工具,为应用整个生命周期提供了完善的支持平台,包括了以下功能,不过,使用需要付费。
站在当下来看,对于前端技术背景开发者来说,如果已有Angular基础,不希望引入过高学习成本,需要快速开发一个复杂程度不算太高、或者对应用性能不是特别敏感的跨终端App,选择Ionic依然是一个可行方案。
然而,既然你已经身在前端领域这样一个技术更迭日新月异的圈子里,还是应该使劲的折腾,关注跨端开发这个主题新的技术热点,接下来我也会继续谈谈在NativeScript、React Native、Flutter的一些体验,可以保持关注。
《知行》感悟系列文章历史浏览:
《知行》技术人的管理之路(一)管理的基本框架
《知行》技术人的管理之路(二)角色认知
在互联网行业中当角色转变为管理岗位或者是某个团队的负责人的时候,就不能事事等着上级来安排,要学会自己规划事情。
这在里所说的管理规划就不仅仅是指工作上的规划,而是上升到整个团队;从核心内容来看,管理规划要求管理者回答清楚这样一个问题: “这个团队你打算怎么带?”
怎么回答这个问题呢?我们要根据管理规划四要素以做回答。
本文围绕管理的四要素,以及移动端负责人的身份来进行展开讨论..
团队所谓的“职能”就是回答“团队是干什么的”这个问题。
如果你想回答好这个问题不妨先思考以下下面3个问题
我的回答:
思考的问题回答完了,那么我的团队职能是什么呢?也就是我的团队是干什么的呢?
开发并设计一款高质量的使用在移动端的应用程序,以提高居民的生活的便利,并且可以为公司提供良好的品牌效应。
当所有的团队成员清楚了团队职能才能产生如下的效果:
1.提升团队凝聚力
2.有效激励员工
3.提升员工的主动性
为什么这里说是团队的职能而不是说职责,因为团队的职能包含了两个层次:
职责和使命。职责是团队职能的下限,使命是团队职能的上限。
简单描述就是基本职责解决的是团队的“生存问题”,而使命解决的是“团队实现”问题。类似就像个人的自我价值实现一样,具体就不展开说了。
既然团队职能的2个层次都说明了,那么我们就要做点什么了,那就是为团队设定基本职责,也需要为团队确定使命。
第一步:收集信息
从如下的四个角度梳理收集职能信息
第二步:提炼和升华
第三步:确认和主张
团队的职能的设定和宣贯是一个长期任务,不是一蹴而就的。越早做越好,逐渐的形成潜移默化的概念。
职能的界定明确来团队的价值,那么目标就是回答了“通过什么来体现团队价值”。也就是取得什么成果来体现其价值,以自身为例
本节主要是通过意义、原则、维度、形式、挑战来展开对目标的讨论。
1.目标首先意味着期待
2.目标意味着资源的有效配置
3.目标意味着执行力
4.目标意味着凝聚力
5.目标意味着激励
确定下清晰合理的目标不仅可以“做事”,甚至还可以“带人”,是一举两得的事情。在目标确定之后要想一想,是否和团队成员都同步了目标,以及对这个目标是否有疑惑等等。
目标的设定我们遵守SMART原则即:
1.明确性(Specific)
2.可衡量性(Measurable)
3.可达性(Attainable)
4.相关性(Relevant)
5.时限性(Time-bound)
我们首先看一个没有设定原则的目标:
我们的目标是优化App的体积。
在看一个通过设定原则优化过的目标:
从本周一到下周一,将App的体积大小减少20%。
判断一个目标是否足够清晰,只有当SMART都符合的时候才能说明目标是清晰的,而且设定的目标时尽可能少而细。通过SMART原则检查清单可以检测当前目标是否足够清晰
SMART原则检查清单:
目标维度从3个维度考虑:1.业务目标。 2.团建目标(梯队、规模)。 3.专业目标
简单说书这3个维度,这三个维度简单点说就是业绩产出,团队发展和专业能力。
业绩是要对公司以及上级或者是老板负责的,这个目标是一定要设定的;而团建目标的设定体现了管理规划的完整性,也就是说为什么目标和带人是不可分的;专业目标的设定可以提升团队的专业性,也有利于提高个人的专业能力。
从个人成长角度来说,业务的目标设定到完成的过程中,可以在时间充裕时设定自己的专业目标,通过专业目标的达成最好是能提高业绩的产出;这种不仅提高了个人的能力,还完成了公司的任务。
1.可以量化的指标 KPI
2.不可量化的目标 KRA或OKR
简单的通过KPI常见句式为:到某时间点,什么指标达到什么数字
例:“到九月底,把单机性能从300qps提升到500qps”
KRA或者OKR常见句式为:到某时间点,完成什么工作,该工作实现了哪些功能活达到了那些效果
例:“到12月地,发布BI系统1.0,支持KPI数据统计、全量数据到吃分析功能”
这部分的内容先不展开说了,有必要的时候单独写一篇文章来分析 KPI、KRA、OKR。
作者的总结就是,OKR适用于开放性强、追求创造性的组织;KPI适用于规则成熟、追求执行性的组织。
通常在目标设定遇到困难的时候,可以通过以下四类问题换个角度找到答案。
这类问题往往的情况就是,接到了一个需求任务,给你的第一反应就是这个项目够呛能做完,压力很大,完成的程度也不确定。
面对这类问题和挑战的钥匙叫做“以终为始的出发点”; 通过最终你想要什么来对你的团队进行调配或者是补充资源。
遇见这类性通常都是接到的任务太庞统,太大,比如说今年年底上线一个APP。。主要强调了“我做了什么”,没有交代做完这些工作后“收到了什么效果”
面对这类问题和挑战的钥匙叫做“结果导向的描述”。根据这个任务的需求,来对该任务进行拆分,上线的APP都具有什么功能。比如上限一个APP具有登记开门的功能。
解决办法就是向下传达了,方式有很多,可能就是微信QQ的简单一句话。如果功能业务比较复杂,可以开一个简短的业务分析会。
例如最近的时候做了一个移动端产品的一个业务规划(业务稍微有点复杂),在规划的过程中也确定了当时所能想到的方案和解决办法。方案出来了就是具体的任务落地,将方案转变成实际的工作下发出去。这时候如果不向下传递,那么可能会导致开发者不知道你的需求和业务,开发完的东西不一定满足要求,并且反复修改还会出现抱怨。 借鉴了以往的经验,这次选择了直接和该模块的后台开发负责人进行了过会讨论,在讨论问题和向下传递的过程中,还总结出了一些之前方案中不足的地方,并且愉快的进行了消息同步,效果感觉特别好。
由于公司的战略转变或者是其他的原因,往往大的目标会经常出现改变,而导致了之前我们设立的目标出现了变形,或者是根本不能执行了
面对这类问题和挑战的钥匙叫做 “设定专业目标” 。用专业目标来增强团队的内在定力,而不是被外在的需求将团队作为了救火队员。所谓的那些需求战略的改变往往都是大的战略方向的改变,但是团队内部的核心业务往往也存在于各个项目中。
这一点从自己团队的角度来说,团队内有很长的一段时候都属于那种救火队员,遇到了紧急需求而全力应对,导致看上去没有属于自己的核心业务。这时候需要找到一条出路来做一定的改变。比如重构以往的工程,后台使用微服务的架构,这就属于内在目标;而通过微服务每个团队成员都各负责一个模块,每个人都对自己的模块负责;
对自己来说,设定一个专业目标就是flutter的学习以及产品思维的锻炼,无论工作内容如何改,这两点贯穿到最后,个人的能力都会得到锻炼。
本节主要是从3个团队规划角度分析团队问题,团队建设问题会从后续的章节展开讨论。
刚刚我们说明了团队的目标设定的要点,现在说明的是团建的目标如何设定。团建目标就是团队未来会发展成什么样?
衡量方式如下:
通过上述的3中衡量方式只要盘点清楚现在实际的规模、分工、梯队和未来的规模、分工、梯队,就能把握住未来团建工作的重心了。
从资源视角看待团队,是一个成熟管理者的标志之一。
管理者做人力预算的时候要给出十分充足的理由,为什么需要这些人,为什么会是这么多人,以及依据和估算逻辑是什么。
那么要如何做这个预算呢,首先是自己对业务的理解,以及希望达成的目标角度来看;其次是参照行业资源配比情况,例如产品、设计、开发、测试、运维几个方面。
这个视角的核心含义是,到下一个时间节点,你需要重点培养出哪些人,给他们什么样的平台和空间,以及你有能力提供给他们什么指导和支持,期待他们能够胜任什么职能和角色。
新人的引进我们要了解一个概念“团队消化能力”。就是说团队现在的梯队情况和新人导师的经理问题,一个团队能够良性吸纳的新人是有限的,我们把这个限度称为“团队消化能力”。
怎么估算团队消化能力呢?首先看看团队内谁能带人,分别带几个比较合理。这里的合理就是新人导师既能带人又能兼顾对业务的投入;其次看看团队的新人培养机制是否成熟健全。
带着团队前往目标有那些可选的路径是需要管理者进行筹划的。筹划的工作主要回答了2个问题
第一个问题可以判断出我们达成目标手段是否合理,第二个问题可以判断我们申请的资源是否合理。
综上,我们通过下面的三个方面考虑路径和资源的问题
完成团队的目标需要考虑所带的团队都有那些资源;在这里资源包括时间、信息、权限。时间就是你的目标完成时间,信息就是为了完成这个目标需要自己主动的在公司内外主动收集一些相关的信息,权限就是公司在然你完成这个任务你有多大的权限协调资源等。
站在管理者的视角,需要评估一段时间内的产出效率,而不是追求工作的极致品质了。衡量一项工作“到底需要话5天完成70分,还是花10天做到90分”,这个是管理者的日常工作。通过全局来看,由于时间原因90分不一定有70分好。注意这里优秀的工程师应该放弃一些执念,转换视角,完成工作有很多手段供选择。
对于不同的方案意味着多高的成本,如下的表哥可以帮助新经理扩展思路,看到解决问题手段的多样性,避免思路过于单一。(填写大中小或者打分)
手段-成本盘点表
成熟而职业的技术管理者在倚重技术和迷信技术中间会找到一个平衡,提供一个既能解决问题、成本又合理、兼顾长短期的可行方案,而不是一个只顾眼前的“应急”对策。不是所有的人力短缺都是通过招聘来决绝的,需要综合前面的手段多样性综合来考虑。
我们在评估一个项目的结果的时候,有三个衡量维度是最重要的。
在这3个维度上是有弹性的,可以在一定的范围内灵活把握,这3个维度称为“结果评估三要素”。
在这里值得注意两点
这样我们可以总结出一个原则:对于任何一项工作,评估其结果的关键指标到底是进度、质量还是效果,决定着我们以什么方式投入什么类型的资源,就是说只有我们清楚了最关注的指标,才能让资源的投入得到最大化的发挥。
管理规划从4个方面展开职能、目标、团队、路径。
设定目标的时候,要基于当前的团队的现实情况和可用资源;盘点团队的时候,脱不开目标的设定和路径的选择;探讨路径以及做预算资源的时候,离不开目标和团队。
所以虽然把几个点展开讨论,但是几个要素之间并不独立和割裂的而是以职能为基础,彼此依赖,需要把四个要素统筹来梳理明白,才是一份完整的管理规划。
现在越来越多的APP都内置了Web网页去加载视图,也就是我们常说的Hybrid APP混合应用,市场上很多平台都是这样做的,比如我们经常使用的淘宝、京东等电商平台。这些是如何实现的呢?在我们Android中有一个WebView组件,它就可以实现此类功能。它是Android中的原生UI控件,主要用于在APP应用中方便地访问远程网页或本地HTML资源,同时WebView也在Android中充当Java代码和JS代码之间交互的桥梁,实际上也可以将WebView看做一个功能最小化的浏览器。下面我们一起来看看WebView的一些常用的使用方法。
WebView是Android系统提供的一个能显示网页的系统控件,它是一个特殊的View,同时也是一个ViewGroup,可以有很多其他子View。在Android 4.4以下(不包含4.4)系统WebView底层实现是采用WebKit内核,而在Android 4.4及其以上Google采用了Chromium内核作为系统WebView的底层内核支持。在这一变化中Android提供的WebView相关API并没有发生较大变化,在4.4上也兼容低版本的API并且引进了少部分API。这里简单介绍下基于Chromium的WebView和基于WebKit的WebView之间的差异,基于Chromium的Webview提供了更广的HTML5、CSS3、JavaScript支持,在Android系统版本5.0上基于Chromium 37,WebView提供了绝大多数的HTML5特性支持,除此之外Chromium也支持远程调试(Chrome DevTools)。WebKit JavaScript引起采用WebCore JavaScript在Android 4.4上换成了V8能直接提升JavaScript性能。
二、作用
1、显示和渲染Web页面
2、使用html文件(网络上或本地assets中)作为布局
3、可与JavaScript交互调用
注: WebView控件功能强大,除了具有一般View的属性和设置外,还可以对Url请求、页面加载、渲染、页面交互进行强大的处理。
1. Spring
Spring框架是一款功能强大的轻量级Web应用开发框架。面对需要高性能的复杂Web应用需求,Spring能够提供出色的开发服务,因此它在各个框架中能够脱颖而出。Spring框架的核心宗旨是使得Java开发人员可以轻松地创建出企业级的应用程序。
Spring提供了包括:Spring MVC、Spring Core、Spring Security、Spring Transaction、Spring Boost、以及Spring ORM在内的许多模块,以方便企业应用根据实际情况灵活选用。如果您想深入了解其具体的使用场景和用法的话,可以参见《Spring框架注释指南(A Guide to Spring Framework Annotations)》。
优点
它提供了一个轻量级的容器,用户无需使用Web服务器、或应用服务器软件,即可启动之。
由于支持JDBC,因此可提高实际应用的生产率,并减少错误率。
Spring能够同时支持XML,以及基于注释的配置。
它提供了代码的向后兼容性,和可测试性。
2. JSF(Java Server Faces)
由Oracle开发的Java Server Faces(JSF),可用于创建企业级的应用程序、各种原生应用、以及Web应用的开发。它往往也被用于为基于Java的应用开发用户界面。
作为一款稳定的、且基于组件的MVC框架,JSF具有一种清晰的体系结构,用户可以用它来明确地区分出目标应用的逻辑和表示。
JSF只需通过拖放UI组件,即可帮助开发人员创建用户界面。开发者无需掌握诸如:HTML、CSS、JavaSript之类的高级客户端技术知识,便可用它来简化应用程序的表示层,并进行开发。
优点
JSF是Java EE的组成部分。
它提供了出色的工具和丰富的库。
由于允许用户使用Web界面,来扩展现有的后端Java代码,因此用户不必通过引入新的框架,来更改基本的应用程序。
3. Google Web Toolkit
Google Web Toolkit(GWT)是一个完全免费的,流行且开源的Web框架。它可以帮助开发人员针对Java Ajax应用进行开发和调试。
借助GWT,您可以编写出各种复杂的、基于浏览器的应用程序,而无需具备JavaScript等前端技术方面的专业知识。
当然,GWT也有一些独特的功能,其中包括:跨浏览器的可移植性、历史记录的管理、国际化、以及书签。许多Google产品,包括:AdSense、Google Wallet、以及Blogger都是使用GWT编写的。
优点
开源且完全免费。
对开发人员十分友好。
支持常见的Web开发任务重用。
Google API可以在GWT应用程序中被使用。
提供国际化、跨浏览器的可移植性、UI抽象、书签、以及历史记录管理。
4. Vaadin
Vaadin是一种用于简化Java开发的Web应用框架。它能够方便开发人员构建出自定义的Web开发服务。
该框架的主要优势在于客户端与服务器端之间可以流畅地通信。Vaadin可以从Java虚拟机处直接访问DOM。作为一个轻量级的框架,Vaadin Flow可被用于处理服务器端和客户端之间的路由通信。Vaadin允许开发者将Vaadin组件集成到他们正在使用的任何一款IDE中。由于Vaadin是跨平台类型的框架,因此用户无需将代码迁移到其他的平台上。
在使用Vaadin的过程中,开发人员不需要具有丰富的HTML、CSS、以及JavaScript经验。Vaadin会自动将Java转换为标记。
优点
通过支持拖放、以及其他出色的功能,它简化了Java应用单页UI的创建。
具有WebSocket支持的自动化“服务器端-客户端”通信方式。
使用MVC(Model-View-Controller)或MVP(Model-View-Presenter),来进行数据绑定。
带有嵌套路由和参数支持的路由器。
支持包括Kotlin和Scala在内的JVM语言。
内置了对于Spring的支持。
5. Hibernate
Hibernate是一个对象关系映射(Object-Relational Mapping,ORM)型数据库,可被用于开发出稳定的Java框架。对象关系映射往往被用于横跨两个不兼容的系统,以连接数据。Hibernate在关系数据库管理系统(relational database management systems,RDBMS)和Java应用程序之间,提供了良好的通信。它非常适合工作在复杂的生态系统中,并对数据流实现无缝化。
在使用诸如Java之类的面向对象的语言时,开发人员往往会遇到被称为“对象关系阻抗不匹配”或“范例不匹配”的问题。Hibernate为开发人员提供了一个可以克服此类问题的框架。
Hibernate的查询与SQL类似,称为HQL(Hibernate查询语言)。Hibernate可以直接将Java类映射到相应的数据库表上,反之亦然。Hibernate在其主文件--hibernate.cfg.xml中,提供了使用数据库配置映射的各种Java类信息。
优点
一种强大的跨数据库解决方案。
可扩展。
数据可以轻松地实现转换。
可配置。
总结
希望上面介绍到的各种最受欢迎的、使用最广泛的Web应用开发Java框架,能够帮助您从易用性、配套文档、以及技术支持等需求维度,选出适合自己实际项目的框架。当然如果您是一名新手,那么我建议从《Java信息图(Java Infographic)》一文,快速熟悉并上手Java。