coldfusion_我从ColdFusion迁移到Java开发

coldfusion

尽管我在大学和研究生的整个职业生涯中都研究和尝试了不同的开发技术和工具,但我的全职职业生涯始于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

coldfusion

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

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

相关文章

Citavi插件的安装和使用以及注意事项

【文章转载于知乎大神:Citavi插件的安装和使用以及注意事项 - 知乎】 没有软件是十全十美的,基础功能够用,附加功能以插件、脚本的方式来支持是个不错的思路。 Citavi提供了自定义宏和插件的方式,来满足更为复杂的格式修整和文献…

Java 9中的HTTP / 2支持简介

1.简介 IETF流媒体小组于2015年(即HTTP / 1.1发布后的16年) 批准了HTTP / 2协议。 HTTP / 2有望降低延迟,并且使许多替代方法变得过时,而这些替代方法是HTTP / 1.1所必需的,以便能够满足当今的响应时间要求。 在本文中…

MiUI特色功能设置总结

一 常用设置 【转载于知乎https://www.zhihu.com/question/514792652/answer/2377622710】 1 自动优化系统 其实在手机开发者模式设置中,有2个地方我们需要设置,设置了不仅可以让手机运行更流畅,而且还能帮我们自动优化系统。 &#xff0…

potplayer怎么设置无边框播放,播放时隐藏进度条

potplayer默认情况下播放视频时会显示边框,那么怎么设置无边框播放呢?下面小编就为大家详细的介绍一下,大家感兴趣的话就一起来了解下吧! potplayer怎么设置无边框播放?potplayer设置无边框播放方法 1、点击左上角的potplayer 2、在下拉菜单中点击选项…

蓝牙播放Stereo和Hands-Free AG Audio两种模式的区别?

当使用蓝牙耳机时,发现电脑的播放设备显示了两种模式(如下图所示),Stereo模式下声音正常,而调到Hands-Free AG Audio模式下声音频带窄了很多且音质差,典型的电话音,下面具体说说这两种模式的区别…

office工作日志文件_风暴事件处理器–每个工作者的GC日志文件

office工作日志文件在过去的三个月中,我正在与一个新团队合作,为电信领域的大数据分析构建产品。 Storm事件处理器是我们使用的主要框架之一,它确实很棒。 您可以阅读其官方文档中的更多详细信息(已改进)。 Storm使用…

workrave使用方法

一 模式介绍 阅读模式: 不论电脑什么状态,倒计时一直进行 普通模式: 当检测到电脑没有任何操作,比如打字与移动鼠标,则暂停倒计时。如果长时间没有操作,则默认进入休息状态,下次移动鼠标&…

OpenJDK织机和结构化并发

Project Loom是Hotspot Group赞助的项目之一,旨在向JAVA世界提供高吞吐量和轻量级的并发模型。 在撰写本文时,Loom项目仍处于积极开发中,其API可能会更改。 为什么要织机? 每个新项目可能会出现的第一个问题是为什么?…

在已打开的程序上打开新的窗口

在支持多开的程序上面按shift加鼠标左键,则打开程序新的窗口

Virgo软件的介绍

使用Virgo的场景 Win10自带的虚拟桌面存在BUG,当在第二个虚拟桌面上打开某个软件时(如WPS),会自动跳转到打开该应用的第一个窗口。 Virgo介绍 原代码8KB,启用后占用内存1MB,极简桌面 快捷键 ALT 1..4…

java 8 lambda_玩Java 8 – Lambda,路径和文件

java 8 lambda我最近需要读取一堆文件,而不是仅仅抓住我和可能是大多数开发人员拥有的旧FileUtils.java,然后从一个项目复制到另一个项目,我决定快速看看其他方法。 是的,我知道有Commons IO和Google IO ,我为什么还要…

设置花里胡哨的Xshell字体与背景颜色(超全)

大部分运维和开发经常接触到的客户端连接工具很多都是Xshell,但是经常看到别人的背景色和字体都是五颜六色,还有护眼色的背景(想必大家也会遇到在深夜加班时为了不打扰身边小伙伴的休息不开灯,打开Xshell时可以闪瞎人眼的白色背景…

Jakarta EE贡献–入门

您是否有兴趣帮助Jakarta EE向前发展? 我也是。我想提供一些详细信息,以帮助有兴趣入门的人。 步骤1: 开始捐款的第一步是签署Eclipse Foundation Committer and Contributor Agreement(ECA): https : //…

Ubuntu “sudo apt-get update”报错

一 sudo apt-get update作用 从服务器拉取可用的包到本地 二 出错情况 Ign:9 https://download.sublimetext.com apt/stable/ Packages Ign:10 https://download.sublimetext.com apt/stable/ Translation-en_US Ign:11 https://download.sublimetext.com apt/stable/ Transl…

dpkg:错误:无法新建文件 ‘/var/lib/dpkg/info/format-new’: 没

错误 dpkg:错误:无法新建文件 ‘/var/lib/dpkg/info/format-new’: 没有那个文件或目录 E: Sub-process /usr/bin/dpkg returned an error code (2) 解决方法 1.尝试去查看没有那个文件或目录 2.逐级进入目录,返现没有的是 info 3.用root权限…

add-apt-repository命令详解

该命令是通过PPA源方式安装软件的添加PPA源到Source list中的命令,该软件安装方式的流程为: 1.搜索PPA软件源,如在Google上软件名称关键字 PPA ,或者也可直接到 launchpad.net 上搜索2.sudo apt-add-repository ppa_source_name…

过度配置堆上的OutOfMemoryError

在分配一个应该很适合我为JVM提供的堆中的数据结构时,为什么会出现OutOfMemoryError? 这是我最近遇到的一个问题。 确实,当查看开发人员要完成的工作并通过-Xmx参数对提供给JVM的堆大小进行三重检查时,似乎确实存在着一些可疑之处…

E: Couldn‘t find any package by regex ‘python3.6‘的解决方式

一 问题描述 安装python较高版本。按照网上提供的参考资料,运行相关命令 sudo apt-get install python-software-properties sudo apt-get install software-properties-common sudo add-apt-repository ppa:jonathonf/python-3.6 sudo apt-get update sudo apt…

如何在Java中修复表达式的非法开头

您是否遇到过这个令人难以置信的错误,想知道如何解决它? 让我们浏览一下这篇文章,研究如何解决表达式Java非法开头错误。 这是一个动态错误,这意味着编译器会发现某些不符合Java编程规则或语法的内容。 初学者大多会遇到Java中的…

apt-cache 命令

一 命令介绍 apt-cache 命令可显示 APT 内部数据库里的多种信息。这些信息是从 sources.list 文件内聚集不同来源的缓存。于运行 apt update 运作时产生的。 APT包管理器工作在软件包元数据的本地缓存上。通过apt-cache命令,可以查询本地APT缓存并获得相关信息。 …