Java拥有了丰富的IDE生态 , 而其一重要部分就是插件. 插件其作用通常是辅助开发者进行开发. 在这个角度上 , 它重新将Java展示开发者的眼前. 这种重新展示的过程 , 我认为也算是一种元编程, 或者我认为也可以叫「编程语言的VR」.
特点
插件, IDE ,编程语言的关系
插件==>IDE==>编程语言
将职能分离
编写「编程语言」和「IDE」的团队不是同一组织 . 这种职能分离产生了多样性 , 即繁衍出eclipse, myeclipse和intellij idea等IDE. 这也导致了Java程序员没有一个统一的IDE. 以及插件要对不同IDE进行兼容的维护成本.
多样性导致不统一
IDE是为了更方便编程而制造的工具. 因此, IDE是依赖于编程语言, 而编程语言和IDE并没有任何关系. 所以编程语言常常没有一个官方指定的IDE. 所以常常有人讨论关于「IDE vs 编辑器」 . 插件也是同理.
插件的产生
插件的产生是因为编程语言常常存在一些难以忍受的地方, 以至于我们想修改该语言, 而修改该语言存在困难 (旧版本Java无法修改) , 于是乎我们就想用插件进行部分修改(无侵入式).
插件的产生, 不仅仅因为旧版本无法修改, 还涉及到的是 社区内的意见 的分歧. 如 : bean类是否应该默认带有setter/getter. (编程语言的艺术仍旧在发展的路途上)
再者 , 为了达到功能稳定 , 国内公司经常选择旧版本的Java , 这也导致新功能无法引进 , 使得Java的开发体验很差.
多样性必然带来开发的不统一 , 于是乎有的团队就自立规定. 然而这种规定并不能垮公司 , 这也就是所谓的不兼容/分歧.
开发商形成自己的主流
为了解决多样性带来的不统一. intellij IDEA 就将其认为合理的插件集合起来, 形成自己的”规定”, “主流”. 这一点上 , 原汁原味的eclipse让我感到郁闷.
现今仍遗留的问题:
- IDEA不是官方IDE . 原因很多 , 收费啊 , 社区发展啊(避免垄断). 这导致了IDEA的”规定”无法成为真正的”规定” . 另外 eclipse和IDEA是存在内置插件的差异 (IDEA有内置大量插件 , 其于eclipse是有部分冲突 , 其中代码检查这一块就是有冲突的)
- IDEA的”规定”仍处于发展中. 虽然IDEA有挑选以及自制一些插件 , 但是这个数量并不足够. 也或许是IDEA已经解决核心插件的集成 , 剩下专业的插件集成需要各个大公司的推进 .
日后的期盼
良好的插件集成管理 . 插件的查找,安装,学习是额外的学习成本 , 也就是”我学习Java语言 , 也必须学习查找更好的IDE插件, 以提高效率”. 这一成本应该是被节省下来.
例子
重构提示工具
作用 : 指导开发者进行规范的开发
lombok
使用过Lombok的人都知道, 要使用前必须安装其插件, 没有插件运行则报错. 而作用就是简化代码. 如: @setter和@getter代替读入和写入. 就算我们不知道其原理, 也可以猜测得了该插件的作用
- 抑制报错
- 运行时候, 将注解编译成字节码
这种做法, 是在编程语言 (不是代码) 的高度上进行元编程.