在2019年及之后为开发人员开发Oracle的内容

前一段时间,我再次换了工作。 新雇主非常友好,他允许我选择我喜欢的任何IDE并支付许可证费用(但在合理范围内)。 另外(一次),我在工作中的计算机上拥有管理员权限,因此我可以安装任何东西,并尝试任意数量的尝试。 我尝试过:Oracle SQL Developer,TOAD,Alt SQL Developer和(突然!)IntelliJ IDEA(PL / SQL Developer并没有尝试,但是之前已经做了很多工作)。 如果您定期编写PL / SQL代码,或者至少不时向Oracle数据库发出请求,那么我认为阅读我得出的结论对您来说很有趣。


我想马上警告你。 我不能说我对每个IDE都进行了彻底的研究,而PL / SQL Developer等等,是五年前的最后一次。 因此,总可以证明,当我说“这不在IDE中”时,实际上就在那,我只是没有找到它。 当我谈论PL / SQL Developer时,我的意思是版本似乎是8(我在5年前写的)。 那时那里可能发生了很大变化,而未必一定会变得更好。


竞争者


那我们有什么呢? 首先,这就是Oracle开发的三大要素:TOAD,PL / SQL Developer和Oracle SQL Developer。 这些产品早已投放市场,每个人都知道它们,每个产品都有自己的粉丝大军。 几次我都认为TOAD更像DBA,而PL / SQL Developer更像开发人员。 关于Oracle SQL Developer,我还没有听到这样的消息,显然,他的支持者主要由管理人员组成,这仅仅是因为它是免费的。


另外,我决定包括Alt SQL Developer(一个人开发了很长时间,甚至可能仍然是一个产品)和IntelliJ IDEA(又名 天哪,他是Goga,他是 DataGrip)。


对于那些不了解JetBrains产品设计的人

该系统有这样的东西:有IntelliJ IDEA社区版-它对于Java是免费的。 有几种类似的付费产品(大约几百美元/欧元):RubyMine用于Ruby,DataGrip用于数据库,等等。 还有IntelliJ IDEA Ultimate Edition,它是最昂贵的(看起来大约是650),但结合了所有JetBrains产品的功能。 所有这些产品都具有相同的界面,并且非常相似,因此可以轻松地从一个版本切换到另一个版本,甚至比从一个版本的Excel切换到另一个版本更容易。
因此,在下文中,我们说IDEA-我们的意思是DataGrip,我们说DataGrip-我们的意思是IDEA。


PL / SQL开发人员


我从2011年开始使用Oracle,这是我遇到的第一个IDE。 碰巧的是,在接下来的三年中,无论我在哪里工作,都使用了PL / SQL Developer。 我对它进行了很好的研究,它似乎是一个很好的工具。 尽管2014年是我启动此IDE的最后一年,但即使到现在,在我看来,这也是一个不错的选择。 主要的缺点是它只能在Windows下运行。


Oracle SQL开发人员


Oracle发布的免费IDE。 除了免费之外,还有另一个优点-跨平台。 您可以在Linux和罂粟上运行。 但是,也许优势就在这里结束。 我于2015年首次开始使用它。 它工作得相当好,但是还有很多烦人的小事情。 便宜又开朗。


蟾蜍


在我的职业生涯中,我尝试过几次开始使用TOAD。 每次我运行它时,我立即都会有一个问题-然后呢? 在哪里单击以开始工作? 上一次是在几周前,我终于掌握了它! 我弄清楚了哪个按钮在哪里,哪个书签在哪里。 该IDE功能强大,但组织起来有点愚蠢,恕我直言。 一堆窗口和书签让您感到困惑。 并且也仅在Windows下。


Alt SQL开发人员


对这个IDE的了解始于论坛上的一个主题 。 一个花花公子来到论坛,说他正在用二十一点和妓女编写他的PL / SQL Developer。 我从未认真使用过此IDE,而是在几周前才安装它并尝试工作。 看起来像PL / SQL Developer,从中抛出了所有不必要的垃圾。 不幸的是,尽管已有七年的历史,但它仍然潮湿。 我不记得我在那里确切遇到了什么,但是不幸的是,对于我当前的项目而言,它并不适用。 通常,这种想法蔓延到作者放弃开发。 遗憾的是,对于一个人开发的产品,这是非常值得的结果。 尊重,尊重和支持光芒! 同样,只有Windows,但是在这种情况下,我们不会进行争辩。


Intellij IDEA


实际上,起初我只是想学习一点Java并在此IDE中编写。 然后,对于我的一个爱好项目,我需要构建一个PostgreSQL数据库,事实证明IDEA也做得很好! 在当前项目中,他开始与该IDE紧密合作,并对此感到满意。 的确,美中不足的是:我遇到了一个严重破坏血液的错误(IDE停止显示其中一种方案的对象-遇到麻烦,这是最必要的一种)。 写了一个错误报告,几天之后,在我不得不受苦之前,在JetBrains论坛上建议解决该问题。


开发人员在谈论什么

在与同事的对话中,我曾经提到过,不久前我决定开始学习Java-基本上是为我自己。 我从Eclipse开始,只是因为我之前听说过此IDE。 然后,在一两年后,一个朋友建议IDEA,我尝试了一下-这是一见钟情。 这个IDE似乎了解我,几乎可以读懂思想。 然后一位同事问:
“她为什么这么钩你?”
-嗯,至少在美学上也是如此-例如,有一个黑暗的设计主题。
“但是Eclipse也有一个黑暗的主题!”
“不,你不明白。” 我下载了Idea并安装了它,并且在它第一次启动时,显示的第一件事是并排放置了两张图片。 深色主题或浅色-选择。
这时,我们的前端工作人员抬起手指,尖锐地说:
-笨蛋! 用户体验!


发行价


价格基于一家开发商的官方网站。 通常,每个人都有针对大量开发人员的软件包,然后它仍然便宜。


PL / SQL开发人员:$ 216 + 60年度支持。
Oracle SQL Developer:免费。
蟾蜍:1054欧元(LOLSTO ???也许我只是看错地方了?)
Alt SQL开发人员:$ 99
DataGrip:第一年199欧元,第二年159欧元,第二年119欧元。


在IDE中进行PL / SQL开发


编写代码


首先,开发过程包括读写代码。 好吧,这很清楚:语法高亮显示,自动完成,导航,工具提示等等。 竞争对手如何应对这项任务?


如果我们从实际角度考虑问题,那么旗舰店肯定会继续前进。 自动完成和导航,恕我直言,在PL / SQL Developer中效果最好。 在TOAD和IDEA中,情况稍差一些,但是我无法让Oracle SQL Developer以对我来说方便的方式强制执行自动完成(而且,其中的设置一直在飞向我-由于某些原因它们根本没有保存)。 另外,我想指出一个细微的差别:如果出于某些原因关闭了自动完成报价窗口,则PL / SQL Developer可以通过Ctrl + Space再次显示它。 以及带有功能参数名称和类型的工具提示。 其余的IDE不知道如何,如果不知道,那么我也不知道设置中的哪个键以及这些选项的调用方式,我也不知道。


此外,PL / SQL Developer还有一些专门用于SQL的很酷的技巧:生成表中所有字段的单击列表,以逗号分隔,在ALL_SOURCE中按代码搜索,一种特殊的模式,用于在字段进入列时显示选择结果,并在相邻列的一行数据。 当您需要查看陌生表中的哪些字段以及大约哪些数据时,这非常方便。 从所有这些方面,从竞争对手那里,我仅在IDEA代码搜索和表列的列表生成中找到了。


每个人都共享SQL和PL / SQL的格式选项,功能或多或少都相同,并且还提供预览。 除非在TOAD中,否则它们过于复杂以致于无法制定。


但是旗舰店在某种程度上不能很好地解决问题的美学方面。 如果IDEA具有整个深色主题,则其余部分可以在代码编辑器中最大化深色背景。 其他窗口中的背景将保持白色(在PL / SQL Developer中,请记住,这也是可以部分自定义的,但是所有内容都位于不同的位置,您可以将眼镜碰杯,其余的都不需要做)。 Oracle SQL Developer是唯一具有几组现成的颜色用于语法突出显示的颜色,包括深色背景的颜色。 默认情况下,其余的IDE仅具有vyrviglaznyh高对比度配色方案和Courier新字体-IMHO,这是该部分中最丑陋的等宽字体。 IDEA使用Consolas字体,它以某种方式更加令人愉悦。 TOAD(我的版本为11.5)分别进行区分:存在一个错误,该错误导致%,&,*和^字符(并且PL / SQL中经常使用前三个字符)不属于设置中的任何字符集,这导致无法为其设置字体颜色。 也就是说,它们始终保持黑色,深色主题意味着痛苦和痛苦。 这是绿色食品吗? 这是惨败哥。


查询,PL / SQL块和脚本


一切都非常顺利。 这项工作对每个人来说或多或少都是一样的,尽管它不会出乎意料。 在Oracle SQL Developer中,将输出包含到控制台是非常不便的(您需要单击多个鼠标),并且IDEA显示未禁用的时间戳记-这使得调试使用动态SQL的过程变得困难。


TOAD和IDEA还可以以INSERT表达式的形式从表中导出数据。


PL / SQL Developer具有诚实的SQL * Plus仿真模式-一个单独的窗口,您可以在其中编写命令,就像在SQL * Plus本身中一样-并在那里输出。 其余的可以愚蠢地执行脚本,然后将输出吐出到下一个窗口中。


值得一提的另一件事是确定SQL查询边界的能力。 Oracle SQL Developer,PL / SQL Developer和Alt SQL Developer要求您使用分号(和带有斜杠的PL / SQL块)分隔查询,否则他们将不了解一个查询在哪里结束而另一个在哪里开始。 在这方面,IDEA有点聪明(似乎也是TOAD)-您可以编写两个有效的查询,而不必使用分号将它们彼此分开,将光标放在其中的一个上并执行它。 另外,IDEA在启动识别的请求之前,先用绿色边框将其包围,另外还要确保已执行了确实需要的请求。


另一个重要的一点是分步调试,但是对于所有IDE而言,看起来似乎都一样,几乎从TurboPascal 7.0开始。 是的,就在一周前,在JetBrains论坛上,他们写道IDEA中的分步PL / SQL调试已准备就绪。 人们已经在进行全面测试。


对象浏览器


最方便的对象浏览器是PL / SQL Developer和Alt SQL Developer。 它们在左侧带有浏览器的面板,在右侧您可以编写代码,并且PL / SQL Developer还具有在同一面板中搜索和过滤对象的功能。 Oracle SQL Developer几乎一样好,但我不喜欢它。 在TOAD,我不喜欢这样的事实:如果您查看对象的浏览器,则在左窗格中显示了对象本身,而在屏幕的其余部分则显示了对象的众多属性。 但是使左侧的对象和右侧的代码编辑器失败。 也就是说,TOAD可以提供更多信息,但是可用性并不是它的强项。 IDEA有一个对象浏览器-最弱的一点,负三点。 一方面,可以理解它们,而不是单个Oracle,甚至只是一个关系数据库,DataGrip仍然存在,但另一方面:它被称为负载-爬入盒子。


但是IDEA可以为数据库中已经存在的表绘制ER图,并且可以从对象浏览器中调用此函数。 为此,她是个胖子。


版本控制


使用版本控制,情况很难。 历史上曾经发生过(我不知道如何,但这是事实),在大多数情况下,与Oracle一起工作的人都在沉迷于组织团队开发流程的问题。 您能想象一个高级Java(或C / C ++ /前端)开发人员一生中从未使用过任何版本控制系统吗? 但是,可以很容易地找到Oracle高级开发人员-我看到的最后一个不超过去年。 无需谈论测试(在我之前的工作中,我向我们的APEX开发负责人展示了Java + Selenium的简单测试,他回答我-“无论如何!没有测试!这是工作量的两倍-测试和支持代码!),但是对于表达式“ Continuous Integration”,它们似乎会杀了我(因此,我没有表达自己的意思)。
因此,我无法真正测试使用PL / SQL Developer和Oracle SQL Developer版本控制系统的功能。


但是我尝试了一点

在撰写本文之前,我在家用计算机上启动了Oracle SQL Developer。 我连接到存储库,进行了克隆,更改了文件,在版本比较窗口中查看了更改,按下了提交...我得到了Java异常 签名的 。 但是我有两三年前的旧版本。 她工作新鲜,以优异的成绩通过了这项测试。 哈哈


我使用git在IDEA中工作,IDEA在这方面非常完美。 我的同事使用SourceTree与git一起工作(我同时使用this和that),我可以说IDEA正在其自己的字段中重播SourceTree-尽管SourceTree不能做其他任何事情。


对于其余的IDE,名义上存在用于版本控制系统的菜单项,但我什么都不知道。


我为自己做出的结论


就价格/质量比率而言,Oracle SQL Developer赢得了很大的优势:如果将零除以某个数字,那将是零;)如果我们开玩笑,那么跨平台和免费几乎是它的唯一优势。 纯粹从意识形态的角度来看:如果您查看列出的IDE开发人员的财务能力,那么Oracle是最富有的公司。 但是,如果我们采用实际的功能和可用性,那么他们的软件将是最惨的。


Alt SQL Developer也是一个非常简单的程序,恕我直言,即使要这99美元也不值钱。 但是坚持树:首先,它定性地扮演了PL / SQL Developer的角色,其次,它是由一个人在业余时间编写的,而不是由价值数十亿美元的公司编写的。 与旗舰店同时提及,她绝对是当之无愧的。


TOAD是一款功能强大的软件,但是界面不方便,而且成本高昂。 我不知道您该如何支付这笔费用(我仍然希望我只是看错了方向)。 200-我本以为 还是我不会买


PL / SQL Developer-在IDEA出现之前是我的理想选择。 阅读这篇文章后,我意识到PL / SQL Developer比现在的大多数竞争对手都要好五年了。


我选择了哪个IDE?


我目前选择了IntelliJ IDEA,并想解释一下原因。 似乎她知道某些事情要比竞争对手(对象浏览器)差,但其余的事情是一样的。 但是,尽管如此,IDEA具有一些杀手级功能,远远超过了缺点。 关于他们多一点。


实时模板。 更不用说IDEA的杀手级功能之一-实时模板(Live Template)。 什么是代码模板-每个人或多或少都知道,在所有Oracle IDE中都是如此。 您编写了条件缩写,IDE用一个长的缩写代替了它。 例如,您可以配置IDE以将“ sft”替换为“ select * from”。 IDEA更进一步,此功能称为实时模板。 您可以在模板中插入由“ $”符号括起来的特殊表达式,IDEA不仅会自动替换,而且按Enter会将光标移动到这些表达式所在的位置。


对于那些不在IDEA中工作的人的一个小例子

假设您有一个包含集合的变量MY_COL 。 您需要编写PL / SQL代码来处理此集合。 您可以编写,也可以制作模板! 转到“设置”,找到“实时模板”项,然后单击右侧的加号。
填写:缩写-好,例如“ fori”。 说明-可选。 模板文本-在此处输入以下内容:


 for i in $collection$.first .. $collection$.last loop $END$ end loop; 

在下面,您仍然需要选择“适用的上下文”。 这是必要的,以便相同的缩写可以用于不同的语言。 单击确定。 现在在编辑器中:键入fori,然后按TAB键。 出现代码模板,并且红色框和光标出现在$ collection $位置。 现在,您需要输入“ my_col”,然后按Enter。 您应该能够:


 for i in my_col.first .. my_col.last loop end loop; 

请注意-光标将出现在$ END $的位置,也就是说,不是在设计之后,而是在里面的某处-您可以控制此行为!
从描述中可能不太清楚,所以最好放一个IDE并进行练习。 我保证你会喜欢的。


重构。 只是每个人都有可能自动替换的文本,即使在笔记本中也是如此。 但是三巨头所没有的是更智能的自动替换功能。 如果程序包中有多个函数使用相同名称的变量或参数(即使在其他位置使用了这样的字符组合),则AutoCorrect会将其全部重命名。 而且,如果您需要在其中一个函数中重命名变量,那么您将必须遵循并在半自动模式下进行自动替换。 IDEA解决了这个问题-通过Shift + F6键,您可以完全重命名所需的名称。 而且这些只是花朵,重构有点复杂。


还有...


2009年,著名的界面设计专家Alan Cooper发布了他的《 On Interface》一书的第三版。 特别是在那儿,他引起了读者的注意:一个奇怪的事实:任何用于处理至少一些用户数据的应用程序(在这里,我们指的是任何真实的数据-Word,Excel,记事本,Paint等)都可以创建一个文件,给它起一个名字,向其中写入数据,等等,但是一个操作系统(?!!!)不能重命名已经由同一程序打开的文件,尽管操作系统没有任何限制。 要重命名文件,请关闭它,与操作系统的服务联系,然后再次打开它。 可用性,是的。


俗话说,童话将会到来。 Taki IDEA掌握了此功能! 正如他们所说,不到10年。 重命名文件是重构功能的一部分。
等待其余的...


代码检查长期阅读Habr的人,他可能会看到一家公司定期发布的文章来开发其用于静态分析的产品,并且很可能设法渗透了这个概念。 突然发现,IDEA具有一组用于PL / SQL分析的规则。 当然,那里的设置仍然很差,我将向他们抛出带有一些新规则的功能请求,但是即使那里有什么也可以做得很好。 随机检查了一个程序包后,我发现了一个未使用的变量和四个...嗯...用俄语怎么说?..无法到达的语句。 然后事实证明,这些无法到达的语句是在纠正文本时偶然形成的,最后还是同样的错误。


运行脚本。 IDEA可以运行bat / bash文件,这是直接从IDE配置的。 这非常简单:我们打开相应的文件,IDEA提供了安装用于处理此类文件的插件,我们同意,插件已安装(几秒钟内),我们配置启动,我们将进一步工作。 如果使用脚本运行SQL * Plus,则非常方便。 我们还对用Ruby编写的PL / SQL使用单元测试,并且以相同的方式从相同的IDE中运行它们(但是对于Ruby,您已经必须安装IDEA Ultimate Edition,DataGtip将不起作用)。


可用性。 最后,IDEA简单方便。 IDEA有大量的插件。 使用插件的任何人都不会感到惊讶,它们无处不在。 但是,例如,IDEA可以自行确定其具有可为您提供帮助的插件。 典型的情况是-打开文件,IDEA会显示消息“有一个用于处理此类文件的插件”,并提供下载和配置文件的信息。 通常,通常,当发生一些奇怪的垃圾时,IDEA会显示一个弹出菜单,其中包含纠正此垃圾的可能操作的列表。 非常好的用户服务。


IDEA可以进行帮助搜索。 如果您知道IDE的某些功能的名称,则只需转到帮助并在搜索栏中键入此名称,IDE就会通过箭头向您显示此功能的位置。


TL; DR IDEA是PL / SQL开发的iPhone。 我只希望IDEA开发人员能够取得更大的成功,并且我想提醒其他IDE的开发人员,那些无法进化的恐龙已经灭绝了。


PS:很长一段时间都无法完成本文。 似乎在任何现代IDE中都有如此多的功能,您可以无休止地研究和编写它们,而研究5种不同的IDE并描述它们之间的差异则是无穷无尽的。 在这里,我亲自列出了最重要的事情,并以“喜欢-不喜欢”,“方便-不舒服”,“漂亮-丑陋”来概括描述了很多个人事情。 尽管如此,我希望读者能有一个一般的想法,并能够尝试对自己的描述。


PPS JetBrains,您有啤酒;)

Source: https://habr.com/ru/post/zh-CN468299/


All Articles