2011.01 — 2019.01 ?
GWA2/吉娃兔 八周年啦!GWA2内置模板引擎成功由Smarty替换为Hanjst!
欢迎试用体验“轻松启动,高效产出 (EASY模式, Easy Along, Swift Yield)”的“通用网络应用开发框架”。
314 commits / 8 years ,
3.27 commits / month.
几乎每周 GWA2 有更新,在成长.
GWA2/通用Web开发框架, 2011.01 — 2019.01 ,已经走完八个年头。这期间,GWA2 的设计思想始于Java开发语言,第二个完成的版本却是PHP开发语言的 GWA2PHP。
八年来,GWA2 从单一的PHP版本,后续又逐渐完成了 Java生产就绪版本和 Perl的生产就绪版本,规划中的 Aspx 和 Python版本预计在未来2-3年完成生产就绪的初始版本。
八年来,GWA2成功部署无数大大小小的商业项目,并成功孕育出通用管理信息系统:-gMIS / -吉米斯 。
1. GWA2的价值回顾
GWA2的设计与研发思想是面向对象,面向物理世界的,在将这种思想进行工程化实现时,也经历过很多曲折。
我们团队努力要探索和实现的是一种前无古人的问题:
到底能不能实现软件研发框架的跨开发语言?
如果软件开发框架能够跨开发语言,该如何进行?需要遵循哪些规则?有无最佳实践(Best practice)?
计算机科学与技术仍然年轻,信息产业也只是经历短暂的几十年的发展,编程语言及软件工程领域,新思想,新观念,新技术,新尝试仍层出不穷、日新月异。我们庆幸在这波时代巨浪中以 GWA2 的研发探索参与其中,试图回答“软件研发框架是否能够实现跨语言”这样的问题。
从本质价值上说,之所以用软件开发框架,也是前人探索和总结的经验,“为解决一个开放性问题而设计的具有一定约束性的支撑结构”,能够“更迅速和方便地构建完整的解决问题的方案”。GWA2作为单一开发语言的开发框架,承载了这一使命,并严格遵循了面向对象,面向业务等开发规范,在扩展性、易用性方面取得可喜的进步。
在单一开发语言等软件框架的横向比较中,GWA2 也有出色的表现,如GWA2的PHP版本,“-gwa2 vs -thinkphp”, -R/L2SP 。
为何要有跨编程语言的开发框架?
我们预设一名软件工程师在其一生的职业生涯中,绝大多数人不会也不能只懂一门开发语言,在不同的职业阶段,在不同的应用项目上,甚至在不同的历史时期,会或多或少地使用两种以上的开发语言进行工作。如此以来,软件工程师就面临要学习两种以上的开发语言,然后每种开发语言再学习一种软件开发框架。
GWA2 的初衷就是解决掉后面这个问题,软件工程师在A语言掌握和习得的软件开发框架知识,可以无缝地在B语言上继续使用。无需再学习,也不必再学习另外一种额外的软件开发框架。此其核心价值之一。
其二,籍由跨开发语言的“上帝视角”,我们可以审慎地对待每一种开发语言,汲取该开发语言的优点而实现和部署在其他开发语言的相应GWA2的版本中,抛弃其缺点与不足;积极参与各个开发语言社区,以促进各个开发语言的竞向发展。从而实现在不断完善和增强改进GWA2的基础上,推动人类在软件领域的集体进步。
2. GWA2内置模版引擎由从Smarty 到Hanjst
GWA2最近较大幅度的改进是其内置模版引擎由原来的 Smarty 改为 Hanjst。
这首先得益于 Hanjst的生产环境就绪版本的发布(-Hanjst, -汉吉斯特, -R/U2SK )。谈及改动的动机,大致由如下几点。
1) Smarty 本身已经足够好,足够强大到满足生产环境需求,这是 Smarty 在之前我们的遴选中能够胜出的原因之一。Smarty 简洁明了的表达语言很接近自然语言,令其学习门槛低,容易上手,而进阶应用也保持了这种简洁,所以学习曲线并不陡峭。
我们在 GWA2PHP 中集成了 Smarty ,他工作地很好。当我们研发 GWA2Java时,发现 网上 Smarty爱好者已经有将 Smarty 移至成 Java 版本的, Smarty4J ,于是我们也顺理成章地集成了 Smarty4J。
遗憾的是, Smarty4J 是大约7-8年其版本,且其后没有更新,只兼容 Smarty 2的语法,这极大地限制 GWA2Java 进一步的发展。
2)寻求跨开发语言的 模版引擎的想法一直在我们的 Todo List上,最早在 2016年我们就尝试一种 Jstpl的模版引擎创制。
当初的想法一是对跨开发语言的模版引擎的认识,逐渐归集到 JavaScript身上,二是网上现存的JavaScript的模版引擎虽各有千秋,各具特色,但拿出来跟 Smarty相提并论但并没有,多数JavaScript模版引擎均属画地为牢自我限制,然后孤悬一偶。
同时,作为 Smarty的重度用户,在深度使用 Smarty时,也发现一些不足。
3)带着这些想法,我们希望创制一种能够在语法、功能上与Smarty媲美,基于JavaScript的能够跨开发语言的模版引擎。
令人惊奇的是,Smarty 爱好者如此广泛,让 Smarty JavaScript也被研制出来了: JSmart (-R/s2SR ) 。这个开源的模版引擎也在我们的考察范围之内,令人稍微不满意的是,我们无法接受下面这样的模版表达式:
<script id="test_tpl" type="text/x-jsmart-tmpl"> Hello {$name} </script>
我们认为, 第一行和第三行应该去掉。参考: -R/U2SK 。
4)加上其他要改进的 Smarty的语法,我们最终还是决定新造一个我们认为可以做得更好的轮子, Hanjst / 汉吉斯特。
从2016年开始,历时3年的探索与研制,2019年元旦开花结果,-Hanjst, Han JavaScript Template Language/Engine 终于发布一个生产就绪版本,中文名 -汉吉斯特。详见:-R/U2SK 。
3. GWA2的下一个八年
2019.01 — 2027.01
我们会将 GWA2 持续研发下去,继续完善和增强,不断增加和扩张公用类库,拓展增加更多的开发语言版本,如 GWA2Python版本, GWA2Apsx版本等。
我们还将继续完善作为GWA2的集成部分,也可以独立发展的 Hanjst模版,以减少和降低研发人员在使用模版方面的困扰。
最主要的,GWA2 的各个版本都将被部署和应用到更多商业项目中,在其中被检视、检验,并发现问题、修正问题、改进性能等,这些实践是GWA2 不断进步的前提和基石。
我们相信,信息产业、软件行业在未来信息时代的人工智能普遍应用阶段更逐渐成功社会发展和人类进步的基础技术领域和基本设施范畴。
?期待GWA2 的下一个八年,祝愿我们共同的下一个八年更美好!㊗️
-GWA2 是”通用网络应用架构( General Web Application Architeture )”,基于 -GWA2 可以轻便构建各种网络应用程序,
包括复杂的在线购物商城、 旅游交易平台、社群或者社交网站和新闻资讯网站等,
也包括各种企事业单位网上门户,在线交互及服务作业系统等.
还可以包括为NativeApp做服务器端支持, 甚至是WebApp的全部.
-GWA2 是为数不多的支持跨开发语言的应用框架,目前支持 -Java, -PHP, -Perl, -Aspx and -Python .
-GWA2 is a “General Web Application Architecture” and based on -GWA2 developers can easily build a variety of network applications,
including complex online shopping malls, travel trading platforms, community or social networking sites and news information sites, etc.
Also the applications include various online portals of enterprises and institutions, online interaction and service operations systems.
Moreover it contains server-side support for NativeApp, or even all of the WebApp.
-GWA2 is one of the web frameworks which provide cross-language support for -Java, -PHP, -Perl, -Aspx and -Python at present.
-GWA2 is E.A.S.Y
Easy Along, Swift Yield
轻松启动, 快速产出.