几天前已经发布了,我决定再做一次与IntelliJIDEA的比较。上次我解释但是,由于我当前的项目最初在Eclipse中出现了Java 9的问题,我在过去半年中一直使用IntelliJIDEA。(在其他方面仍然使用Eclipse;部分原因是在IDEA中缺乏“多个工作空间中的多个项目”)。

不过,这一次的比较正好相反--我真正希望在Eclipse中有哪些想法特性;使工作变得更容易和更有效率的特性。(顺便说一句,什么是适合使用的短版本-IntelliJ?想法?)

这不是偏离了我的立场“Eclipse更好”吗?不-我不相信有一个完美的IDE(或者说完美的任何东西),所以任何产品都可以尝试获得竞争的最佳方面。在这里,我将重点介绍Eclipse落后的五个特性。

第一,“查找路径”对话框。对话框的交互性,看到所有结果的事实打字时能够用箭头导航结果是巨大的。将其与Eclipse笨重的搜索对话框进行比较,该对话框(虽然功能相当强大)有100万个选项卡(很少集中在所需的选项卡上),然后实际单击“Search”在搜索面板中获取结果列表,在其中双击以查看上下文…。这和想法相比是很糟糕的。

第二是指静态进口。除了在测试中,静态导入并不经常使用。Mockito、Hamcrest、test实用程序方法--在每个类中都需要数十个静态导入。Eclipse感到很痛苦--您手动导入所需的方法,然后组织导入,然后突然需要另一个导入,而您天真地添加的.*已更改为特定的导入,因此再次必须手动导入。相反,IDEA只是建议在自动完成弹出中最相关的静态导入,并为您处理这一点。

第三是自动完成的。当您开始键入时,IDEA自动完成触发器;在Eclipse中,它只在点之后触发-否则您必须使用CTRL+空格。是的,我知道有自动激活设置但是,正如我以前抱怨IDEA的默认设置一样,现在轮到Eclipse了。这甚至不是一个复选框-你必须积极地输入整个字母表,小写和大写字母,以使它工作-这只是糟糕的设计。在哪种情况下,我需要在a,b,c上自动完成,而不需要在d,e,f上完成?

https://www.imdb.com/list/ls088787593/

第四就是简化。有时,您会在流上得到相当长的调用链,它们可能不是表达您想要的内容的最佳方式。IDEA可以提出改进建议,以便在取得相同结果的同时,更易阅读和理解。作为一种奖励,你最终会开始自己做这个简化。

第五-参数标签。当你调用一个方法foo.bar("Some string", 0, true)不太清楚参数是什么。虽然您可以正确地认为这是一个糟糕的方法签名,但是简单(+String)参数只是时不时地传递一个值,在方法调用时查看参数的名称是很有用的。创意很好地证明了这一点。

当然,每一种IDE都可以从另一种方式中复制更多的东西。希望这场比赛能继续下去,并使双方都得到改善。

有时,特别是在政府或企业环境中,您需要使用智能卡在浏览器中对文档进行签名(有些人可能称之为“密码令牌”)。这是很少见的,但很多人在私人信息和电子邮件中问过我如何做到这一点。也许他们看过我几年前的一些文章,但没能成功。我的文章展示了浏览器内电子签名的演变(或转移)。

https://www.imdb.com/list/ls088167934/

第一然后CAPICOM和window.crypto被废弃,因此唯一的选择是使用Javaapplet。然后Java小程序被废弃了,我们没有选择了。我们得到,但它显然不支持硬件令牌。

因此,我写了一个但它还没有发生,而且很可能在不久的将来也不会发生。那么,我们现在能做什么呢,所有以前的选择都被否决了?

一种很好的方法是一次性安装一些定制软件(可以是JavaWebStart应用程序,也可以是与Java无关的应用程序),它运行本地服务,侦听特定端口,然后使用javascript库将数据发送到http://localhost:1234/sign并获取响应。有这样的解决方案,特别是西努(由于付出的努力,

你可以试试发送XMLHttpRequest,它必须在HTTPS上运行,因此您必须在应用程序中打包一个私钥(这违背了许多证书颁发机构的要求)。现在,据我所知,本地主机不受这一要求的限制。

我希望我不必在两年内再写一篇文章,解释这种方法被另一种讨厌的方法所取代。