我从ColdFusion迁移到Java开发

尽管我在大学和研究生的整个职业生涯中都研究和尝试了不同的开发技术和工具,但我的全职职业生涯始于Adobe ColdFusion的开发。

从学校毕业后,使用技术解决现实世界中的业务问题本身就是一个挑战。 由于其相当简单的性质,ColdFusion不会妨碍您完成工作。 它也使我能够应用应用程序开发的主要原理。 但是,随着时间的流逝,我开始注意到该语言提供的工具集并不像其他开发技术(如Java)那样丰富。


最终,我渴望与更复杂但更有价值的语言紧密合作,那就是当我过渡到Java时。 因为我最初的有意义的应用程序开发经验是使用Java,所以我常常把这种转变追溯到我的根源。 该博客将讨论我在进行过渡时的一些想法和经验。

ColdFusion –简化基本任务

在典型的Web应用程序堆栈中,ColdFusion是服务器端开发技术,可满足从用户的Web浏览器收到的请求并向后发送有意义的信息。 ColdFusion是一种基于标记的语言,可以很好地与HTML集成。 它也可以以面向对象的方式独立运行,但这并没有改变其目的。

当我仍在使用ColdFusion时,我的经验为我提供了有关Java存储的资源的零碎提示。 由于ColdFusion本身是在Java之上运行的高级解释语言,因此可以创造性地使用其下的Java。 例如,以下代码片段允许在单个语句中从ColdFusion数组中删除重复项。

myArray = createObject("java", "java.util.ArrayList").init(createObject("java", "java.util.HashSet").init(myArray)
);

但是,这些技术基本上没有记录。 为了在ColdFusion中应用它们,您已经必须知道Java中的一些巧妙技巧。 如果是这样,为什么不花时间在Java上做得更好呢? 我相信ColdFusion随着时间的推移已经取得了长足的进步,但是只是发现并实现了Java已经掌握的知识。

虽然两种技术的基础非常相似,但ColdFusion在市场上有特定的用途。 它以简化基本任务而自豪。 例如,ColdFusion中的数据库访问工具非常简单,尤其是在首次引入它们时。 由于这种易用性,ColdFusion在快速应用程序开发平台方面享有盛誉。 该语言不仅方便使用服务器端功能,而且还提供了一些现成的UI组件,可以节省开发时间,并且可以说在某种程度上减轻了开发人员的前端职责。

理论上听起来不错。 但是,实际上,UI小部件太简陋,无法在任何现代现实应用程序中使用,特别是考虑到最近几年出现的前端库,更不用说HTML5的新兴功能了。 进行AJAX调用的内置快捷键看起来确实很优雅,但是它们通常不足以适应所有情况,因此无论如何您最终都会诉诸于更强大的jQuery。

当您只使用好部件时,ColdFusion就是“另一种”服务器端技术,它也恰好同时带来了组织文化,或者我认为长期而言,它并不理想。

快速性

快速应用程序开发的概念经常被误解。 实际上,它的快速性最终并没有给您带来多少好处。 尤其是在首次设置应用程序时,应该对体系结构进行大量的思考和计划。 如果适当的体系结构到位,则对应用程序进行增强将不是一件容易的事。

另一方面,如果“快速”地开发某些东西,不可避免的技术债务将永远使您感到沮丧,因为花费时间重构应用程序比创建增强功能更难辩解。 通常,重构需要更长的时间,会引入系统范围的错误,这需要额外的质量检查资源。 我越是坚持这种想法,我就越意识到建立正确的基础是多么重要,在这种情况下,“快速”一词似乎并不有吸引力。

考虑到这一点,我在使用这两种技术的工作场所中遇到了不同的性能期望。 您可能已经猜到了,在使用ColdFusion的情况下,完成功能的时间表一直要求更高。 我绝对是生产性工作环境的拥护者,但我也相信,在提供功能和维护代码库之间应该保持平衡,以便可以更轻松地完成将来的增强和修复。

当仅关注应用程序功能时,很难保持高质量的文化。 我发现,使用更明智的体系结构的环境允许一定的“缓冲时间”使代码库比您遇到时有更好的位置,就像Boy Scout规则一样。

工装

值得探讨的另一点是开发工具的复杂程度和实用性。 在我的ColdFusion和Java开发工作中,我都使用Eclipse作为集成开发环境。 Eclipse传统上称为Java IDE。 但是,由于其可扩展性,可通过插件促进ColdFusion开发。 尽管该插件对社区的支持非常出色,但它与Java可用的代码检查和调试工具不匹配。 我倾向于认为差异是由于Java是一种编译语言,而ColdFusion是在运行时解释的。

无论如何,考虑到Eclipse是一种免费资源,它极大地提高了开发人员的生产力。 当我开始从事Java的职业生涯时,这是一种重新发现的奢侈品。 我深信,不一定可以节省您时间的开发技术本身,而是可以在整个开发过程中使用的工具。 可以免费获得有用工具的访问肯定使Java在这一比较中处于领先地位。

最后的想法

无论是否偶然,不同的技术似乎都在一定程度上促进了组织文化的发展,并各有优缺点。 最终,无论您喜欢发展什么,重要的是要继续成长为专业人士,并挑战自己以找到使用技术或开发语言的新颖方法。 我发现Java平台在这方面非常有益。

每天学习新事物似乎不胜枚举,但就像进行体育锻炼一样,随着时间的流逝,大脑变得更加有效。

资源资源

  • “使用ColdFusion吗? 使用Java。” 由Barney Boisvert

翻译自: https://www.javacodegeeks.com/2014/05/my-move-from-coldfusion-to-java-development.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Azure IoT Hub和Event Hub相关的技术系列-索引篇

Azure IoT Hub和Event Hub相关的技术系列,最近已经整理了不少了,统一做一个索引链接,置顶。 Azure IoT 技术研究系列1-入门篇 Azure IoT 技术研究系列2-设备注册到Azure IoT Hub Azure IoT 技术研究系列3-设备到云、云到设备通信 Azure IoT 技…

spiderUI窗口过小解决

复制以下代码,直接替换此css样式即可: C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\webui\static\debug.min.css body{margin:0;padding:0;height:100%;overflow:hidden}.warning{color:#f0ad4e}.error{…

js获得页面鼠标位置

1.客户区坐标位置:clientX,clientY 鼠标相对于在当前页面可视范围左上角的位置 2.页面坐标位置:pageX,pageY 鼠标相对于页面左上角的位置(受滑动等影响,例如pageYclientY scrollTop) 3.屏幕坐标位置&#x…

针对新手的Java EE7和Maven项目–第7部分

从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5 部分 , 第6部分 在上一篇文章(第6章)中,我们发现了如何使用Arquillian和Wildfly 8.1进行单元测试JPA2域模型。…

【转】IP Socket知识

虽然不是每个人都要做网络工程师,但开发人员的日常工作中,没有哪个不曾接触IP, 我碰到过好多新手在IP上犯迷糊,总结一下。 IP地址的记法: IP地址由四个字节构成,为了方便阅读和书写,每个字节用0…

具有Akka反应流的反应队列

反应性流是最近宣布的一项计划,旨在在JVM上为具有内置背压的异步流处理创建标准。 该工作组由Typesafe,Red Hat,Oracle,Netflix等公司组成。 早期的实验性实现之一是基于Akka的 。 预览版0.3包括演员生产者和消费者,这…

灰盒测试—提高篇

灰盒测试是要运用一些开发知识的,大家都认为要去学习开发知识。网上很多论坛也有人说做测试之前,最好要有一、二年的开发经验就比较好。做为黑盒测试人员,如果会当然好,但是大部分黑盒测试人员是没有开发经验,这里我谈…

Django框架下报的版本问题

报错环境 python3.6.5,django2.2,PyMySQL0.9.3 …… django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. 解决方法: Django连接MySQL时默认使用MySQLdb驱动,但MySQLdb不支持…

CSS选择器总结

选择器   优先级 实例ID选择器   100类选择器    10伪类选择器     10 :link :visited :focus :hover :actived :lang  UI元素状态伪类          E:enabled{}匹配所有用户界面&#xff08…

C# 实体转为json字符串

C# 实体转为json字符串 Catalog cata new Catalog(); cata.C_platformid 0; cata.C_isnav 0; cata.C_isvalid 1; string strJson JsonConvert.SerializeObject(cata); 转载于:https://www.cnblogs.com/woniucode/p/10684214.html

Gradle入门:简介

Gradle是一种构建工具,可以使用基于Groovy编程语言的内部DSL替换基于XML的构建脚本。 最近它吸引了很多关注,这就是为什么我决定仔细研究一下。 这篇博客文章是我的Gradle教程的第一部分,它有两个目标: 帮助我们安装Gradle 描…

JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结

超时调用需要使用window.setTimeout(code,millisec)方法 它接受两个参数:要执行的代码和以毫秒表示的时间(即在执行代码前需要等待多少毫秒)。其中第一个参数可以是一个包含JS代码的字符串(就和在eval()函数中使用的字符串一样&a…

损失函数_分类

通常机器学习每一个算法中都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程。 在分类或者回归问题中,通常使用损失函数(代价函数)作为其目标函数。 损失函数用来评价模型的预测值和真实值不一样的程度&#xff0…

首页回顾功能

公司要弄一个首页回顾的功能,可以查看以往某个时间的首页。程序每天自动在上午和下午分别抓取一个页面,生成地址为http://xxx.com/review/channel20090715am.html 的形式。 这个功能用到了jQuery UI 的 datepicker日历插件,但是主要的还是通过…

多表关联更新字段

update jdjc_cy gset g.ypmc(select w.cymc from jdjc_spjdcy w where w.cydzjg.zj) where g.cydh020-JLSP14001转载于:https://www.cnblogs.com/zhuyeshen/p/10685220.html

使对易失性字段的操作原子化

总览 易失字段的预期行为是,它们在多线程应用程序中的行为应与在单线程应用程序中的行为相同。 禁止它们表现相同的方式,但不能保证它们表现相同的方式。 Java 5.0中的解决方案是使用AtomicXxxx类,但是这些类在内存(它们添加标头…

浏览器内核总结

一般来讲,浏览器分为外壳部分和渲染部分。外壳部分就是用户看得见摸得到的外观和操作界面;而渲染部分则包括了浏览器内核和JS引擎,其中JS引擎主要负责执行javascript语言实现网页上的动作,而内核则负责渲染网页,把数据变成用户可以…

SDHelper module加密系统解密

电脑上运行了SDHelper module,文档修改就会被加密,无法在别的电脑打开,工作中无意中发现的方法可以避开加密 1:可以通过打开文档并登录你的office,生成分享链接出去可以避免加密 2:本地起一个vue的项目&…

nehe教程混合这一节需要注意的两个地方

//glDepthFunc(GL_LESS); //glEnable(GL_DEPTH_TEST);///关掉深度测试,否则没效果,原因是后画的物体通不过测试,当然也就不能混合了 glDepthRange(0.0, 1.0); glClearDepth(1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor(0.0, 0.0, 0.0, …

Kubernetes CRD开发模式及源码实现深入剖析-Kubernetes商业环境实战

专注于大数据及容器云核心技术解密,可提供全栈的大数据云原生平台咨询方案,请持续关注本套博客。如有任何学术交流,可随时联系。留言请关注《数据云技术社区》公众号。 1 CRD资源扩展 CRD 即CustomResourceDefinition,是 kubernet…