为何 IntelliJ IDEA 比 Eclipse 更好

圣战

有一些没有唯一正确答案的“永恒”的问题,例如哪个更好:是Windows还是Linux,Java还是C#;谁更强壮:Chuck Norris还是Van Damme。

其中的一个圣战便是Java IDE的选择:

有许多争论的话题是讨论它们哪个有更多的插件、快捷键等等。它们之间有太多的不同而很难决定什么才是最重要的。

因此,人们都表示两个IDE在功能性上都差不多,选择某一个则是个人喜好问题了。

我认为这不仅仅是个人喜好的问题,有客观的原因能表明:Intellij IDEA 肯定比Eclipse更好.

我不会去大量比较两者细微不同,例如插件与快捷键之类的。因为有一系列的blog是关于这些的,例如:[part 1] [part 2] [part 3]。我将会展示IDEA与Eclipse的一个最大的不同之处。通常IDEA和Eclipse的fans都不曾了解。前者已经习惯性的使用着它而不曾想象IDE缺少它会怎样,后者则没有使用它的习惯且难以想象有了它IDE能做得这么好。Eclipse的用户在把玩IDEA的时候通常都不会意识到这个不同点,因为他们习惯了以Eclipse模式工作。

为何我如此确信?

在开始说明之前,让我解释一下我是谁和为什么我的观点值得一听。

我使用Eclipse已经5年之久,我很了解它,我为它编写插件并真心地喜爱它。然后,我换了一个公司工作,并被强行转移到IDEA上开发,在这次“分手”后,我才最终意识到为什么IDEA更加敏锐。而如今我我已经使用IDEA一些年了,所以我能比较它们两者,因为我了解它们。

IDEA与Eclipse主要的不同

IDEA之所以更加敏锐的原因是:IDEA懂得上下文。这也是JetBrains员工命名IDEA为intelligent的原因。它真正的含义又是什么呢?IDEA检索你的整个项目,分析项目所有的内容,甚至构建语法树。幸亏有它,在任何时候无论你将鼠标放置在哪里,IDEA都知道你在哪里并知道在那能干什么。

仍旧不了然?别担心,在列举了以下几个例子后,一切就清楚了。

这种对上下文的理解表现在很多很多方式上,以下只是其中的一部分。

1、调试

通常在调试过程中,我们想要求一些表达式的值,在Eclipse中你需要选定这个表达式,选定整个表达式非常重要,否则你就没法求出它的值。然后,你可以使用Ctrl+Shift+I看到这个表达式的值。

使用IDEA你不需要选择任何东西,你只需要把光标移到你的表达式中然后按下Alt+F8。IDEA会很好的理解这个你可能需要的表达式,然后显示一个对话窗口,其中有一些它给出的建议参数变量。你也可以编辑并在对话框中立即将得到这个表达式的值。相当的方便!试过这个特性后,你就不会再想在Eclipse中调试了。

基本上在两个IDE上都能让你做同样的事,但是使用IDEA会更加简单和快速。对此我认真的表示,这个差异太大了:就像天堂跟人间一样。在一个小小的IDEA对话窗口中就提供了自动完成,语法高亮以及你需要的一切。

2、自动完成

自动完成使得IDE比notepad更加优秀,在这个领域能感知上下文的IDEA有了质的飞跃。例如,我们开始如下一行代码:

assertElement(By.id("errorMessage"), vi

现在我们想要查找以vi开头的选项有哪些。

IDEA怎么做的呢?无需等待任何的按键,它马上就能理解assertElement需要一个Conditaion类的示例作为第二个参数,而在Condition类中有一个静态变量名叫visible。IDEA会直接建议这个唯一的有效选项。

然而,Eclipse会怎么做呢?唉,它不能理解上下文,它不知道光标所在处就是assertElement方法的第二个参数。因此当你按下“神圣”的Ctrl+Space时,Eclipse只会简单的显示全局中以vi字母开头的一切。

在一个美丽的弹出框中我看到了很多漂亮的高亮的格式规范的无用的信息.:(

3、重构

专业的程序员能够高效的使用IDE提供的重构功能。所有的现代IDE都提供许多印象深刻的重构功能。但是还是那句,IDEA的重构功能也很聪明智能。它们能读懂你需要什么,然后针对不同的情况提供给你最适合的解决方案。

例如,假设我们有一个assertErrorMessageIsHidden方法:

public void assertErrorMessageIsHidden() {  assertElement(By.id("errorMessage"), Condition.visible);}

我们以字符串“errorMessage”作为该方法的一个参数。

让我们先从IDEA开始,将光标放在任何字符串“errorMessage”上,按Ctrl+Alt+P(代表“parameter”),IDEA将会建议我们可能可以在哪些表达中用次字符串为参数。

当“errorMessage”表达式被选定以后,IDEA将会建议一些可能的能用做该参数的变量名称。

每月惊奇

你会经常地惊讶于IDEA的聪敏表现,比如它为你提示一些选项的名称。它考虑到方法名称,变量类型甚至是变量值,以及其他的此类变量的名称,与之前你给定的此变量的名称,除了忽略了你的生肖。相信我,你会想说“Wow,IDEA也能这样?”,我想说至少每个月一次吧。

现在然我们看看Eclipse是怎么样给出建议的。

别忘了,选择整个"errorMessage"表达式哦。选择一个“推荐参数”的重构功能(通过菜单,没有什么快捷键可供使用),获得差不多相同的结果,然而,Eclipse不会给出变量名提示选项,但幸亏不会。

结论

如果我们选择Java IDE,那么Intellij IDEA肯定要比Eclipse好的。这不仅仅是个人喜好问题。从客观上看,IDEA更好。它是的你能够快捷地编写和修改代码。它给出恰当的名称提示,查找适合的方法。它不需要你特别地选择表达式便会猜测到你想要做的以及你想如何对它命名。IDEA预示着并给你提示。

P.S. Remarks

我认为IDEA在作为Java IDE时确实比Eclipse更好。如果你考虑他们其他方面的能力例如用于其他例如C++、Python、Scala的IDE上,或者是作为构建桌面的应用的平台,Eclipse很有可能拔得头筹。

事实上这是依赖于对他们的定义的,Eclipse已将自己定位为一个抽象平台,用来使用插件构建任何工具,而IDEA则定位为一个“智能的Java IDE”,而且它正如此。

作为纪念我就尝试着列绝一些Eclipse可能比IDEA更好的地方:

  • Eclipse看上去更棒,所有大题小做的SWT以及本地控件都用的很值。Eclipse看上去很稳定的深思熟虑过的程序,它有着漂亮的字体以及图标。然而当第一眼看到IDEA是,它像是作噱头的玩具一样,有着不完全的图标以及笨拙的Swing界面。
  • Eclipse拥有更强的项目结构支持。在IDEA中,你的项目是有模块组成。在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?
  • 为Eclipse编写插件似乎很简单
  • IDEA比Eclipse使用更多的系统资源。这其实也说得通–因为IDEA了解得更多
  • 最后,Eclipse是免费的,然而IDEA Community版本已经够我用了

最后的建议

如果你需要漂亮的图标,用来创建桌面程序的平台,C++IDE或者你用一个低配的笔记本工作,那么Eclipse可能对你来说是更好的选择。但是如果你是一个正儿八经的Java开发者,你需要更快更方便的工具帮你集中注意于解决问题而不是让你分心,IDEA则正是你所需要的。

 

via:dzone.com ,OSChina原创编译

你的代码可以是优雅的,但是还有更重要的

在开发过程中,我的口头禅是: Your code may be elegant, by mine works。我为此而常常受到质疑,也有人反驳我“你不会使用最优方法!”“你在逃避测试!” 为了避免一次又一次地重复解释,我决定阐述下我的观点,仁者见仁,智者见智。

首先,我认为“项目可能会延期,但是代码会更好或更容易维护或更简洁”这句话是有问题的。项目延期,就是未完成,不应该用代码质量会更高作为借口。如果客户要在圣诞节进行推广活动,但你在12月29号才完成项目,即使提供了史上最好的产品,也是毫无价值的。

其次,我们来谈谈“最优方法”这个问题,“最优”是否意味着要写出更易于维护的代码需要更长的时间呢?其实除了大家都知道的《101个最优方 法》以外,“最优”的标准是各种各样的。无论你对其进行怎样的定义,“最优方法”对所有程序员来说,应该是一种自然的编程标准。举个最简单的例子,经验丰 富的程序员会自然地将变量命名为:$a、$b、 $c等,也能正确地缩进代码行。说得再深入一点,有经验的开发者知道在什么时候、如何提高效率以使得项目能如期完成。虽然 “最优方法”的标准有很多,但这些标准不会令你因此而延长项目时间。这引出我将谈到的下一点——Over-engineering(过度设计,指设计出来 的系统比恰到好处要复杂臃肿的多,过度的封装、一堆继承、接口和无用的方法,以及超复杂的 xml 配置文件)。

像任何经验丰富的程序员一样,我了解那种想为每个项目搭建最好、最灵活、最耐用的系统的心态。但我也了解每个项目都有的商业限制:时间和资金。 大多数项目都有明确的截止日期和项目预算,开发者要有意识地去控制项目规模以按时达到目标。你没有任何理由花一周时间,来为一个 20 行的 table 表上的数据库查询设置“恰当的”缓存层。多了解实用案例,如果只是为了实现一个页面访客计数器的功能而构建支持多种同时响应请求的 XHR 框架,是不现实的。要有眼界,这是我最强调的一点,最好的程序员不是精通如何构建最棒的系统的人,而是了解系统不需要的是哪些功能的人。

另外,在软件开发领域,上市时间是商业驱动力,在 web 应用开发领域,由于其动态性,这点更为明显。当时间成为关键,“最优方法”就是最简单的解决方案。

最后,我们来讨论一下技术债务(指为了匆忙实现一个功能,破坏了现有的程序库,在实现的过程中污染了代码库的设计)。如果在开发过程中,你在某 个地方偷工减料了,那么就会产生无法解决的长期存在的技术债务,而且在之后的开发中,任何一个决定,都会受该债务的影响。事实上,在接手商业项目时,明白 何时、如何对代码进行简化的能力是很关键的,这也是区分老手和菜鸟的标准。解决技术债务的办法有很多,但应尽量做到不产生技术债务。同样地,过度设计也不 可避免地会产生技术债务。

通常人们在谈到技术债务的危险时,并没有包含商业影响。但其实技术债务与实际投资回报率是相对的,因为在许多情况下,早日上市更具成本效益。也 有种情况是技术债务与收益同时存在,那么你可以慢慢偿还债务,但这会延长你的项目时间,很可能当你解决完技术债务时,你也失去了市场机会。

作为软件开发者,我们常常认为自己的工作就是开发软件,但其实这只是一种手段,我们的目的是令开发商达到他们的商业目标,你的代码也许很优雅很简洁,但如果不能达到目的,就丝毫没有意义。

英文原文:Your Code May Be Elegant

分享10个 jQuery 的动态插件

在这篇文章中,我们将介绍一些我们收集的不错的动态插件,帮助你添加高级的特效和动态网页效果,希望大家喜欢!

1. jmpress.js

一个jQuery的impress.js实现,基于CSS3变化和过度效果。只支持现代浏览器,所以只支持Chrome,Safari和Firefox10支持,当然以后肯定支持所有的浏览器。

分享10个jQuery的动态插件

2. Stellar.js

一个jQuery的插件提供给滚动元素来生成视差滚动的特效

分享10个jQuery的动态插件

3. jQuery Multiple File Upload Plugin

一个jQuery的插件帮助用户很容易的选择很多文件上传。并且提供很多基本功能不递交表单执行帮助错误监控。

分享10个jQuery的动态插件

4. jQuery Snow Falling Plugin

创建一个下雪的效果,通过拷贝最初的雪花,通过不同间隔和添加随机属性来实现。小于1kb大小。

分享10个jQuery的动态插件

5. jQuery Star Rating Plugin

一个用来创建星级评定的jQuery插件

分享10个jQuery的动态插件

6. Poshy Tip jQuery Plugin

一个工具提示插件帮助你快速创建样式化的工具提示。

分享10个jQuery的动态插件

7. FeedEk : Display RSS/ATOM Feeds

一个jQuery的解析和显示RSS和ATom种子的插件。可以使用很少代码简单快速的得到内容。

分享10个jQuery的动态插件

8. Minimit Gallery Plugin

一个高度自定义的类库插件,帮助你实现画廊,幻灯,轮播等效果,非常小,小于1kb。

分享10个jQuery的动态插件

9. jQuery Collapse : Expanding and Collapsing Content

这个插件提供cookie保存,ARIA兼容并且设计灵活,模块化可以使用在不同环境下。

分享10个jQuery的动态插件

10. Convert Simple JavaScript to jQuery Plugin

帮助你了解如何将一个js转化成jquery插件

分享10个jQuery的动态插件

来源:分享10个jQuery的动态插件

黑客宣称3月31日将使全球互联网瘫痪

著名黑客组织匿名者(Anonymous)近日对外宣称,将于3月31日攻击13个DNS根服务器,已达到让全球互联网瘫痪的目的,此次攻击作为其发起的“Operation Global Blackout”行动的一部分,是为了抗议“SOPA(美国《网络反盗版法案》)和为了一己私利而置世界于饥饿之中的华尔街银行家与资本家们”。

SOPA/PIPA法案希望进一步强化保护知识产权的力度,当版权方发现侵犯版权内容时,可以要求网站(包括搜索引擎、支付平台、广告平台等)屏蔽所 有内容,甚至可以要求互联网接入服务商(ISP)停止向网站提供服务,随后再进行司法程序。并且它规定如果没有“事先采取防盗版的措施”,也就是事先自我 审查,就不能免责。

同样,该法案的施行也会拥有全球性的影响,打个比方,华纳兄弟电影公司发现了在意大利某网站上有《黑暗骑士》的种子下载,他们就可以要求谷歌迅速在其 搜索引擎中移除这个网站的所有内容,PayPal也会立即停止接受对该网站的一切支付行为,也就意味着此网站离关站不远了。

Anonymous已经列出了13个DNS根服务器的IP地址,并表示通过切断互联网,人们就无法进行域名查询,从而使得HTTP互联网服务瘫痪,因 为“HTTP毕竟是整个网络功能中使用最为广泛的形式”,如此一来,任何人输入“http://www.google.com”或任何其他的URL,都将 会得到一个错误页面。Anonymous表示他们并非真的要切断互联网,只是暂时采用一种最极端的方式来表示他们的抗议。

虽然很多人表示不相信Anonymous能够做到让根服务器下线,指出他们根本就不清楚DNS根服务器的工作原理,但该组织表示已经编制出了一个强大 的DDoS攻击工具,让人们了解虽然说互联网不能轻易被攻破,但他们完全有信心摧毁某些站点来引起大家对互联网安全的足够重视。

据悉,“Anonymous”是一个组织松散的全球黑客组织,该组织最初由于对科学教网站的攻击而受到关注。在维基解密的泄密事件中,该组织由于支持 维基解密,攻击维基解密的“敌人”而成为关注焦点。2012年2月1日,因欧盟支持反仿冒贸易协定(ACTA),国际黑客组织Anonymous开始入侵 欧盟多家网站,其中包括欧洲议会 (European Parliament)的网站。近日继戏弄FBI(美国联邦调查局)后,该组织又已经攻破CIA(美国中央情报局)网站,Anonymous发布信息称, 已窃取阿拉巴马州警方和政府服务器数据,攻击墨西哥参议院和内务部网站,并已暴露墨西哥矿业商会的邮件地址,目的是抗议阿拉巴马州去年制定的House Bill 56移民法。

1到10的成长:IE从小萝莉蜕变为御姐

IE的年岁基本上可以赶上互联网了,IE已发行版本曾用于以下版本Windows:Windows 95、Windows NT 4.0、Windows 98、Windows 98 Second Edition、Windows Millennium Edition (Me)、Windows 2000、Windows XP、Windows Server 2003、Windows Vista、Windows 7。IE 1.0首次提供给Windows 95用户,并由此开始了IE与Windows的捆绑,随后的2.0、3.0……直到IE8,都是如此。

如今,IE10也即将来到大众身边。相比第一代IE的青涩,如今的IE成熟了太多。在此,让我们追忆一下历代IE版本,简单地回顾一下它们给浏览器市场带来的影响:

Internet Explorer 1

第一代IE浏览器于1995年8月16日发布,当时它还是一个非常不起眼的新兵,IE开发团队一共才6个人。

1到10的成长:IE从小萝莉蜕变为御姐

Internet Explorer 2

IE 2.0紧跟着第一代IE的脚步,同年11月份就发布了,它支持SSL、Internet Newsgroups,并且开启了同时支持Windows和Macintosh系统的时代,其Macintosh版在第二年1月问世。

1到10的成长:IE从小萝莉蜕变为御姐

Internet Explorer 3

第三代IE发布于1996年8月13日,此时距离IE问世将近一周年,该版本还首次揭开了蓝色e的图标,开发该版本时,IE团队的人数达到了100人。

IE 3.0拥有很多新功能,例如支持CSS、Internet Mail、News 1.0、Windows Address book、Microsoft NetMeeting、Windows Media Player,另外还可以显示JPEG、GIF图片。IE 3.0的一个不得不提的特色就是它可以处理流媒体音频而无需第三方插件,此外还支持ActiveX和Java程序。

IE 3.0发布一周内下载量就突破了100万次,对当时的浏览器霸主网景(Netscape)产生了不小的震动。

1到10的成长:IE从小萝莉蜕变为御姐

Internet Explorer 4

IE 4.0发布于1997年10月,支持Windows 95、98和Windows NT,IE 4.0率先引入了对DHTML的支持,这在当时开启了新的web设计时代。IE 4.0也是首次深度捆绑到Windows系统中的IE版本,后来还引来了美国反垄断调查。

1到10的成长:IE从小萝莉蜕变为御姐

 Internet Explorer 5

IE5支持AJAX,发布于1999年3月,是最后一款16位IE,也是最后一版Macintosh客户端IE。当时,IE团队已经壮大到1000人。

1到10的成长:IE从小萝莉蜕变为御姐

 

Internet Explorer 6

IE6大家应该很熟悉了,它发布于2001年8月,与Windows XP堪称黄金搭档,时至今日,仍有不少用户在坚守着IE6,不过微软已经开始了绞杀活动,希望用户能尽快抛弃IE6。

1到10的成长:IE从小萝莉蜕变为御姐

Internet Explorer 7

IE7发布于2006年10月,它发布时距离IE6问世已经有足足5年,对于一款浏览器来说,这个孕育期实在是太长了。在这段时间里,IE的一个强力竞争对手出现了,那就是2004年11月发布的Firefox。

1到10的成长:IE从小萝莉蜕变为御姐

Internet Explorer 8

IE8于2009年3月发布,它增强了日常任务的安全性和效率,引入了Accelerators、ActiveX Improvements、RSS授权以及离线内容的监测……它也是微软首款支持64位下载的IE版本。

1到10的成长:IE从小萝莉蜕变为御姐

Internet Explorer 9

IE9发布于2011年3月,是微软最新一代浏览器。

1到10的成长:IE从小萝莉蜕变为御姐

Internet Explorer 10

IE10首次与大家见面是在2011年4月,不过当时还只是雏形,随着Windows 8消费者预览版的发布,IE10也走近了广大用户。IE10的一个最大变化莫过于新增了Metro版,Metro版IE10不再支持Flash、Silverlight技术,而是支持HTML5,此外还抛弃了插件。

1到10的成长:IE从小萝莉蜕变为御姐
桌面版IE10看起来和IE9相似

1到10的成长:IE从小萝莉蜕变为御姐
Metro版IE10