在每个日历年末,我想总结一下在这一年末发生的软件开发行业中一些最重要的发展。 这些选择完全是主观的,显然是由我自己的经验,背景,看法和偏好所引起的。 现在,我不用担心这样一篇博文的内容,我将介绍我认为在2013年最重要的软件开发方面的发展。
10.摇篮
在我看来, Gradle在2013年以很大的方式进入了软件开发人员的主流意识。一段时间以来,我一直在观看Gradle的开发并使用它,但是我注意到现在有很多开源项目都在其中突出地提及它,它在许多最近出版的Java书籍甚至不是关于摇篮特别提及,而谷歌选择的摇篮与在谷歌宣布我其Android Studio产品交付/ O 2013年过了好一会儿了Maven的突破,并与竞争蚂蚁和我认为2013年是Gradle突破性挑战的开始,该挑战旨在挑战Maven和Ant在基于Java的构建系统中的优势。 三本专门介绍Gradle的书(简称Gradle:超越基础知识 ,更全面的Gradle在行动中以及German Gradle:Modernes Build-Management – Grundlagen und Praxiseinsatz )已列出了2013年出版日期。
Gradle Swift增长的知名度几乎与其令人难忘的新版本相提并论。 Gradle 1.4 (“使用较少堆空间的更快构建”), Gradle 1.5 (“对依赖项解析的优化”), Gradle 1.6 (改进的任务排序,“用于测试覆盖的JaCoCo插件”以及对JUnit测试类别的支持), Gradle 1.7 (“有史以来最快的Gradle”), Gradle 1.8 (性能改进和更多本地语言支持), Gradle 1.9 (错误修复和HTML依赖关系 告 )和Gradle 1.10 (“命令行可用性功能”)均于2013年发布。
Gradle的成功并不令我感到惊讶。 仅Groovy基础就具有许多优点:与XML相比,Groovy脚本比XML更易于编写过程构建样式的代码; Groovy具有许多语法快捷方式; Java开发人员可以轻松地学习和应用Groovy; Groovy具有完全的JVM访问权限; Groovy包括在Ant支持下。 除了在Groovy上构建的固有优势之外,Gradle在该Groovy基础之上还建立了许多有用且有吸引力的功能。 Gradle遵循一些Ant和Maven约定,并支持Ivy和Maven存储库,从而可以轻松地从Maven或Ant + Ivy迁移到Gradle。
Ruby on Rails帮助将Ruby纳入国际主流地位,在较小程度上, Grails为Groovy做了同样的事情。 Gradle有潜力在Grails离开的地方继续前进,并将Groovy进一步推向聚光灯。
9.单一语言发展趋势
几年来,向多语言编程一直有明确的趋势( 多语言持久性甚至出现在该帖子的去年版本上)。 尽管这种趋势可能会持续下去,因为某些语言比其他语言更适合脚本编写,某些语言比其他语言更适合于Web开发,某些语言比其他语言更适合于桌面开发,某些语言更适合于实时和嵌入式设备开发与其他语言相比,某些语言比其他语言更适合于科学计算,依此类推。 但是,我已经看到迹象表明摆锤至少最近回摆了一点。
支持Node.js的理由之一是JavaScript开发人员能够在Web应用程序的“前端”使用与“后端”相同的语言。 Antonin Januska 在2013年我学到的关于开发的热门事物中 ,写道:“使用相同的语言背对背工作真是太棒了。” 当然,这就是Java开发人员在某些情况下一直拒绝为其Java应用程序的前端使用JavaScript,Flex或JavaFX Script (现已弃用 )的原因(以及Google Web Toolkit之类的工具如此受欢迎的原因) )。 编写桌面应用程序的 Java开发人员(是的,弗吉尼亚州确实存在 桌面应用程序 )经常会体验到从前到后使用相同语言的优势。
Ceylon最有前途的可能性之一是可以在Java虚拟机和JavaScript虚拟机上运行的Ceylon中编写代码的能力,因此可以在基于Ceylon的应用程序中前后使用。 确实, Ceylon页面上做了广告,“ [Ceylon]在Java和JavaScript虚拟机上运行,??弥合了客户端和服务器之间的鸿沟。” 通常与Java虚拟机关联的语言(例如Scala和Kotlin)也提供了编译为JavaScript的功能。
在许多环境中回到单一语言的趋势的最后一个例子是科学计算的同质化一文中介绍的Python在科学计算中的使用,或者Python为什么一直在稳步吃其他语言的午餐 。
我并不是说这种趋势意味着将来将只有一种主要的编程语言。 但是,我确实相信,尽可能多地使用相同的语言或方法是人类的天性,因为这是我们所熟悉的,使用相同的语言有助于我们在同一应用程序中更广泛地利用我们的经验。 趋势似乎是,每种主要语言(C / C ++,Java,JavaScript,Python,.NET语言等)都将继续建立自己的“堆栈”,以支持该语言中的端到端功能,并且其框架,库和工具的生态系统。 当一种新语言开始被广泛采用时,它很快就会开始看到各种框架,库和工具包的开发,以扩展该语言的应用范围,这并非巧合。
我也不想暗示这是多语言编程的结束。 我看不到任何一种在所有情况下都最适合的编程语言,毫无疑问,最有价值的开发人员将是那些熟悉多种编程语言的人。
8.物联
我在JavaOne 2012上第一次听说了物联 的概念,在JavaOne 2013上得到了更多的关注。 甲骨文不是唯一一家吹捧物联 的公司 。 与许多其他公司一样, IBM也在进入物联 。
有人认为2014年将是物联 之年 。 Tori Wieldt将“ Java和物联 ”称为“ 2013年Java顶级故事 ”之一。 2013年, Hinkmond Wong的Weblog中的两个系列着重介绍了物联 ,并在感恩节土耳其高音扬声器和圣诞节圣诞老人探测器上发表了特色文章。
其他有关物联 的不同见解的有用文章包括:物联 :纠结的 络 , 这 是物联 中 最可怕的部分,物 联 将变得巨大—只是不如炒作那么大 , 面临五个挑战物联 生态系统 , 物联 将在2014年面世, 2013 年国际消费电子展(CES) :物联 的突破年 , 这就是为什么“物联?? ”将变得巨大并为人们和人类带来巨大价值的原因业务 。
在与物联 相关的较轻(或更可怕,视您的观点而定)的注释中, 亚伦·普雷斯曼写道 :“整个疯狂的“物联 ”运动将所有内容置于 络控制之下,似乎是为Hal量身定制的”( 2001:太空漫游( )。
7.移动开发
如果不熟悉我们行业的人开始阅读我们的软件开发 交媒体 站和论坛,那么该人可能会得出这样的结论:当今绝大多数软件开发都是移动应用程序的开发。 长期以来,我一直在争论博客文章和文章通常会朝着比既定主题倾斜的前沿主题,原因有多种(在感知/现实中,既定主题已经被充分发现,恢复建设,与新事物一起玩和写作的乐趣)等)。 话虽如此,毫无疑问,移动开发在现实中不仅在感知上很流行。 毫无疑问,HTML5的普及和快速采用的很大一部分是用一种可以在多种移动设备上运行的语言(HTML / JavaScript / CSS)编写应用程序的机会。 正在发布大量项目和工具,以允许用一种语言编写应用程序并将其编译为各种移动设备的本机格式。
6.响应式设计
Pete Cashmore在2012年底预测,由于其“明显的好处”,2013年将是“ 响应式Web设计年 ”:“您只需构建一个 站,它便可以在数千个不同的屏幕上无缝运行。” 我喜欢Jordan Larkin 对响应式 页设计的解释 :
术语“响应式 页设计”(或响应式移动设计 )是指会更改和调整其外观以在所有屏幕尺寸,平板电脑,智能手机,iPod,Kindle和台式机和笔记本电脑屏幕上进行最佳观看的 站。 有时,在数字艺术行业中,它被称为“流体设计”,“自适应 站设计”或“ RWD”。 没有响应的 站不会更改以适应不同的屏幕尺寸,这意味着它们可能难以在较小的设备上浏览和查看。
内容丰富的 站A List Apart提供了一系列与响应式Web设计相关的文章。
5. Node.js
尽管有缺陷, JavaScript多年来一直主导着Web浏览器。 尽管服务器上JavaScript已有一段时间(例如Rhino和Java中的Nashorn等)已经可用了一段时间,但是Node.js似乎正在为服务器上JavaScript做事,就像Ruby on Rails对Ruby所做的那样:该框架正在普及该语言。 (或在这种情况下,专门在服务器上普及该语言)。
对于Node.js来说,2013年是重要的一年。 似乎每天都有大量博客和文章写在上面。 其中一些文章包括您需要了解的关于Node.js的知识,并且Node.js不断窃取Rails的风头 。
2013年出版了几本有关Node.js的书。这些书包括:《 Node.js的实践》 ,《 学习Node.js:以JavaScript构建Web应用程序的动手指南》 ,《 Node.js正确的方法:实用,服务器端JavaScript》可以扩展规模 , 面向开发人员的Pro Node.js , Node.js食谱:一种问题解决方法 , 掌握Node.js , 使用Node.js进行UI测试 , 在服务器上使用Node.js和ExpressJavaScript以及最终版本节点入门书 。
4.大数据
与去年相比, 大数据在我的榜单上排名第四。 Apache Hadoop和R Project只是伴随大数据浪潮的流行产品/语言的两个示例。 Python也越来越多地被选作处理大数据集的编程语言。
java.net的读者最近回答了一项有关大数据的调查,其中与共识最接近的事情似乎是“ 大数据可能很重要,但并不令人惊讶” 。
3. HTML5
在主要浏览器中,HTML5功能的标准化程度正在不断提高。 像Angular.js和Ember.js这样JavaScript / HTML库是建立在jQuery近年来为HTML5开发带来的势头之上的。
HTML5的成功甚至在不被视为HTML5本身的语言中也很明显。 例如, Java EE 7最广为人知的 新功能之一就是对HTML5的支持 。 NetBeans IDE的最新版本(尽管支持多种语言,但主要考虑是Java IDE)似乎也将HTML5视为2013年最重要的新功能之一。
2.安全性
随着越来越多的信息在线上,并且我们越来越依赖在线数据的可用性,安全性仍然是软件开发人员的重要问题。 高可见性安全事件的趋势在2013年继续。这些事件影响了Ruby on Rails , Java和其他语言。 安全补丁程序的频率越来越高,导致Oracle改变了它对Java SE版本的标签方式 。
2013年初的一篇文章,“ 保护您的代码:开发人员的17个安全技巧”概述了开发人员可以用来提高其应用程序安全性的技巧。 2013年早些时候的一篇文章阐明了公司面临的越来越多的安全问题。 2013年还出版了《 Java编码指南:关于可靠和安全程序的75条建议 》一书。2013年的10大安全故事概述了2013年与安全相关的一些最大故事。
1.技术功能障碍
可悲的是,从软件开发的角度来看,2013年可能是最令人印象深刻的技术故障。 这些问题与“崩溃”,“灾难”和“崩溃”之类的词相关,无论对与错,对我们的行业影响不大。 最引人注目的功能障碍是令人尴尬的美国医疗保健 站Healthcare.org 。 但是,影响声誉和客户信心的问题不仅限于政府。 美国的两家主要零售商沃尔玛和塔吉特在2013年下半年也出现了明显的 站问题。 影响云的技术功能失常在2013年发生在几个著名的案例中,包括Amazon Web Services (AWS)和Google (包括搜索引擎 )。
似乎有很多责备可循,但是很难准确地了解造成这些引人注目的技术故障的原因。 例如,在Healthcare.org中,我看到人们责怪所有类型的罪魁祸首,包括没有花足够的时间进行努力 ,不够敏??捷,过于敏捷, 尽管采用了敏捷方法而失败,无法正确估计用户负载,尽管真正的原因可能是多种多样的,并且可能引起软件开发人员的关注,但真正的原因可能是在2013年。
尽管下面列出的软件开发方面的发展并没有进入我的前十名,但它们对我来说意义重大,足以使它成为“荣誉奖”类别(不分先后或暗含顺序)。
JSON格式
XML多年以来的优势之一就是XML在各种语言,工具,框架和库中的普遍支持。 例如,我最近写了一篇关于使用Groovy 搜索Subversion日志的简单操作的信息,因为Subversion使它的日志输出以XML格式可用,并且Groovy非常了解XML 。
JSON在开发人员中已经很流行了一段时间,但是在许多情况下,支持XML的标准库和工具不支持JSON,这意味着开发人员在使用这些库和工具时必须为JSON编写自定义的编写/读取代码。 。 我现在开始看到对工具和库的更多JSON支持。 编程语言还提供了不错的JSON解析/编写功能。 例如, Groovy已经对JSON进行了一段时间的支持 ,而Java EE 7 ( JAX-RS 2.0 )则通过JSON的Java API包括了对JSON的支持 。
JSON在2013年的表现十分突出,以至于可以保证在2013年出版的两本Packt Publishing书中都包括: JavaScript和JSON Essentials以及使用JAX-RS 2.0,WebSockets和JSON开发RESTful服务 。
Java EE 7发布
Java EE 7于2013年正式 发布 。为证明Java EE的当前广泛使用和预期的Java EE 7潜在用途,图书出版商已经出版了数本有关Java EE 7的书籍,包括Java EE 7 First Look , Java EE 7 Essentials , 从Java EE 7开始 , Java EE 7食谱:一种解决问题的方法 ,向您介绍Java EE 7:新功能和Java EE 7开发人员手册 。
尽管我从未使用过JavaServer Faces(JSF),但对我来说最有趣的Java EE 7功能是对Faces Flows的支持。 我在回顾Java EE 7 First Look和Neil Griffin的文章JSF 2.2 Faces Flows的三篇欢呼时首先读到了有关此功能的信息,这增强了我对该功能的兴趣。 Reza Rahman在“ 现实的JSF 2.2 Faces Flow示例”一文中支持我的观点,即这是Java EE 7的一项关键功能,请引述“ Faces Flows是Java EE 7中最好的隐藏宝石之一”。 Michael和Faces Flows可能会说服我让JavaServer Faces焕然一新。
最近的博客文章显示了AngularJS与Java EE 7的集成 。
单页应用
与桌面应用程序相比,Web应用程序相对于桌面应用程序的优势始终是其易于部署的显着优势。 但是,与台式机相比,这种体验的流动性较低,有时应用程序的性能较低。 单页应用程序的概念是使Web(以及扩展为使用传统Web技术的移动应用程序)的感觉和行为更像是“单页”桌面应用程序。 诸如Meteor之类的较新JavaScript库正在设计用于单页面应用程序的“ thick client”风格。
单页应用程序上的Wikipedia页面列出了实现此概念的一些技术方法 。 曼宁(Manning)的 《 单页Web应用程序》也于2013年发行。其副标题为“ JavaScript端到端”(这是向单一语言发展的另一条证据)。
有关Web开发如何朝着本质上是单页面应用程序概念迈进的又一很好的解释,请参见下面对Meteor的描述。
AngularJS
似乎如果没有碰到AngularJS,就无法阅读任何软件开发 交媒体 站。 尽管其Google根源无疑是其成功的一部分,但 AngularJS可以通过完全满足HTML / JavaScript开发中的重大需求而获得成功(将适当的动态功能从纯JavaScript转换为具有巧妙绑定HTML)。 Dmitri Lau在他的文章《 为什么应该使用AngularJS的十个理由 》中指出:“ Angular是唯一不会使MVC看起来像在给猪涂口红的框架。” 耶稣·罗德里格斯 ( Jesus Rodriguez )在他的文章Angular.js为什么会摇摆写道,AngularJS“在创建单页面应用程序方面甚至在向我们的经典Web应用程序添加一些“魔术”方面都表现出色。” K. Scott Allen在他的文章中写道“ 为什么要使用AngularJS,“我喜欢Angular,因为我在框架顶部编写代码很有趣,而且框架不会妨碍您。”
Ember.js
Ember.js是另一个JavaScript库,在2013年有大量在线 道。Ember1.0于2013年8月31日发布 , Ember 1.2.0于2013年12月4日发布。
像AngularJS和Knockout一样, Ember.js的方法是包含HTML和CSS,而不是尝试将它们抽象化。
著名
目前, famo.us 页需要先“注册Beta版”,然后才能“体验famo.us”。 它的副标题是“解决HTML5性能JavaScript引擎和框架”。 famo.us的另一页指出,“ famo.us是解决HTML5应用程序性能的前端框架”和“适用于手机,平板电脑,计算机和电视的作品”。
在2013年下半年的InfoWorld帖子中讨论了Famo.us: 这些家伙是否只是在重塑 络以及快速且浮华:Famo.us JavaScript框架已公开 。
目前,famo.us仍处于测试阶段,但如果能够实现2013年发布的广告,它在2014年可能会很大。
流星
流星在其主页上被描述为“一个开源平台”,用于编写“用纯JavaScript编写的整个应用程序”并在客户端和服务器上使用“相同的API…”。 在Paul Krill的采访中, Meteor旨在再次使JavaScript编程变得有趣 , Matt DeBergalis表示, Meteor的创建是为了解决不断变化的Web开发范例(通常称为单页应用程序):
Web应用程序平台正在发生变化,特别是人们开始编写一种新型的应用程序,我们称之为胖客户端,其中大多数代码实际上在Web浏览器本身而不是数据中心中运行。 。 这是架构上的变化,从在数据中心中运行软件并将在线发送HTML到模型中,在模型中我们在线获取数据,然后在客户端上进行实际渲染,用户界面的显示。 …这就是为什么感觉更互动。 它不像旧 络那样基于页面。 更具吸引力。”
平均堆栈
GlassFish 4的商业支持已删除
尽管花费的时间比大多数人可能预期的要长 ,但是Oracle对GlassFish 4的商业支持已于2013年正式宣布 ,这是我们大多数人在听到 Oracle收购Sun时所期望的。 现在,GlassFish的未来肯定是阴云密布,并且对GlassFish的未来的期望范围从本质上已经消亡到作为参考实现的繁荣 。
主要的Java IDE继续功能添加到其已经令人印象深刻的功能集于2013年的NetBeans有两个主要版本在2013年有7.3发布在2月和7.4在10月发布。 这两个NetBeans版本增加了功能,例如Java EE 7支持 ,用于HTML5开发的 Project Easel , Groovy 2.0集成 , JSON支持 ,对新JavaScript库(包括Angular.js )的支持, 本机Java应用程序打包 , Cordova集成以及对的改进支持。非JVM语言C / C ++和PHP 。
IntelliJ IDEA 13已于本月初发布 。 发布公告的亮点为Java EE 7的支持,提高了Spring框架的整合 ,提高Android的支持 ,以感谢的IntelliJ IDEA 区版被用作基础的Android工作室 ,提高数据库的处理,而“精摇篮的支持。” Eclipse通常是选择IDE来构建更专业的IDE的对象,例如Spring IDE ( Spring Tool Suite ), Scala IDE或新的Ceylon IDE ,因此Google选择IntelliJ IDEA作为其Android Studio的基础尤其重要。
说到Eclipse,看似最常用的基于Java的IDE (尤其是当您考虑从其衍生或基于它的IDE时)也在2013年发布了新版本。Eclipse4.3(Kepler) 于2013年发布 。 2013年还发布了许多流行的Eclipse 插件 。
Visual Studio 2013
Sun Microsystems并不是唯一一家可以在应用程序的所有层使用的单一语言都具有理想优势和收益的公司。 微软多年来为实现同一目标而进行了各种努力(Silverlight)。 在2013, Visual Studio的2013中发布与显著增强 。 这些增强功能包括改进了对不特定于Microsoft .NET框架的语言的支持。 我在这篇文章中列出了许多受更好支持的语言:JavaScript,HTML,CSS和Python。
Groovy
Groovy的2.0版本(包括静态编译支持)使Groovy成为2012年。 虽然2013没有看到在Groovy语言增强显著,今年也开始了与公布的Groovy的2.1 。 2.1发行版中最大的部分也许是Groovy对Java SE 7的invokedynamic的完全合并 ,后者是针对非Java语言(例如Groovy)的主要Java SE增强功能。
Groovy 2.2的发行版于2013年底宣布 。此发行版通过在基于Groovy的基于invokedynamic的JAR中添加OSGi清单,改进了Groovy的invokedynamic支持。
安德鲁·宾斯托克 ( Andrew Binstock)在《 Groovy难题 》中写道:“由于性能问题,Groovy是为广泛使用而准备的语言,”但警告Groovy是“易于学习但难以掌握的语言”。
正如这篇文章中不止一次提到的那样,由于GradleSwift普及,Groovy在2013年获得了很多额外的曝光。 我相信Gradle将继续向不熟悉Groovy的开发人员介绍Groovy,或者会激励那些一段时间没有使用过Groovy的开发人员再次查看它。
斯卡拉
在我看来, Scala在Java开发人员中继续受到欢迎
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!