天天财汇 购物 网址 万年历 小说 | 三峰软件 小游戏 视频
TxT小说阅读器
↓小说语音阅读,小说下载↓
一键清除系统垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放,产品展示↓
首页 淘股吧 股票涨跌实时统计 涨停板选股 股票入门 股票书籍 股票问答 分时图选股 跌停板选股 K线图选股 成交量选股 [平安银行]
股市论谈 均线选股 趋势线选股 筹码理论 波浪理论 缠论 MACD指标 KDJ指标 BOLL指标 RSI指标 炒股基础知识 炒股故事
商业财经 科技知识 汽车百科 工程技术 自然科学 家居生活 设计艺术 财经视频 游戏--
  天天财汇 -> 设计艺术 -> 为什么 JetBrains 选择用 Java 开发 GUI? -> 正文阅读

[设计艺术]为什么 JetBrains 选择用 Java 开发 GUI?

[收藏本文] 【下载本文】
为什么不采用各个平台上的原生方案?是成本和复用考虑吗?还是最初延续了 Java IDE 的传统?
首先这个 IDE 最早是个 Java IDE,并且这个 Java IDE 的雏形是个叫 JBuilder 的编辑器的插件 IntelliJ Renamer,这才是这个玩意用 Java 写的根本原因 (个人看法),而用了 Java 后各自平台的原生方案就很难上了。为什么不用 JFace,JFX 啥的呢?各大 GUI 框架都有各自的坑,而 JB 逐年测试还自己重写 swing 里的组件来解决 swing 里的问题已经有二十年之久,代码里有针对不同平台、不同版本和种类的 JDK 的版本判断 (在某些功能实现有 bug 的情况下禁用啥的)、一个 chrome 一样的 UI 调试器、Darcula 主题等。重来一次,不知道有多少解决过的问题会重现。与其选择无法预测的大型重构,不如继续使用已经能稳定运行的 swing (虽然性能拉垮,API 难用,但是换其他的可能更痛苦)。
但是你们看到 JB 最近推出的 skija 和 compose-jb 这两个框架了么,难道你们还不明白什么吗 (疯狂暗示)
IntelliJ IDEA项目第一个release是在 2001年,那么项目启动至少是在2000年。
在2000年的时候 Qt 3.0还没出来,要等到2001年Qt 3.0才支持MacOS。
当时如果需求是跨平台IDE,其实真的没得选,只能用Java。
除非自己造轮子,先开发一套C++跨平台GUI库,但不太现实。
各个平台的原始框架就更不能考虑了,相当于在各个平台上分别写一遍还要保证功能体验一致,那可是数百万行代码的项目啊,怎么可能。
首先,jetbrains 公司最开始做的是java ide。
其二,jb起初只能在C 和 java之间选。jb为了跨平台自然选了 write once, run everywhere 的java。
你要说qt,vb,c#, Delphi? 抱歉那个时候没有qt都还不是全平台支持,qt起步于linux,然后登陆windows,再是osx,到2005年,qt才敢说自己是全平台。而vb,c#支持win平台,且没开源。至于 Delphi 是专门开发windows应用的。
如果你要问 html,js,css 用web 跨平台?抱歉2000年的电脑性能带不动 1个星期写出来的js。
————————————————————
好吧,我估计你又要问,现在跨端技术那么多,jb却还死抱java的swing。目前看是,其实jb也在研发自己的UI框架—— Compose for Desktop
ide么,就是把功能按钮放上去,再排几个下拉菜单。至于文本区渲染才是大头。文本渲染肯定是自己写的。
而文件列表,下拉菜单,工具栏。把原来的 swing 改改也能用。就是线框。
只要不需要动画,转场动画。线框、图标,字体搞定这三个就能用了。
未来jb的ide应该是会往自己的compose框架上面转的,重构么,是需要点时间的。
当年也没什么太好的选择吧……
java GUI 做到这个程度 也真是不易了
jb家的产品在三大平台上体验基本一致,除了一些受所在平台影响的环境变量或配置,从这一点上来看,java是个正确的选择。
大概率是因为JetBrains那三个俄罗斯创始人最熟悉Java,加上NetBeans和Eclipse也都是基于Java实现跨平台的知名IDE,说明Java这条路子完全可行。
如何看待跨平台IDE开发商JetBrains估值70亿美元,三个俄罗斯创始人两个跻身亿万富豪?50 关注 · 8 回答问题
还有像MineCraft也是使用Java开发,后来几十亿美元卖给了微软。所以个人感觉主要还是看创始人的个人爱好和熟练度。
我想说swing仅仅是一个库而已,gui拼速度在窗口层面只有用gpu还是不用gpu的情况下有区别,(从运行效率角度上看)。
java界标准窗口应用的基础只有一个就是awt。好多人搞错了awt扮演的角色,你可以用它来直接写应用,但你也可以用它来先写个框架!
做个不恰当的比喻,awt相当于java界opengl,只不过它只面向二维窗口应用。swing才是游戏引擎。如果你感觉swing不好用重新写个引擎就是了。但你要直接用opengl api做游戏那我也没话说...这必须得麻烦死。
awt本应该是vendor提供用来适配各种设备接口,哪怕嵌入式设备。这样java就达到了跨平台和写一次到处跑的目的。
你甚至可以把浏览器和一个web server拼起来当成一个awt设备,让机器A的浏览器显示机器B运行的awt(or swing)程序。idea 的projector项目已经实现了这个。
jetbrain自己好像也在blog上说过因为intellij的core太重了没法单独把gui那层抽出来,所以后面有了fleet,fleet把intellij拆出来做backend然后单独画了前端,应该会流畅很多,而且能连到远程的backend上去了
另外如果在vscode上实现intellij的那套psi索引服务和智能提示,以及一堆企业化插件应该只会更卡
当年大环境就是那样啊。跨平台只能用java。 做为一个java的IDE 用java自身开发,并且有强大的开源社区做支援,那么带来的好处就是,这个IDE的插件会非常丰富。优势很大
选择本来就不多。
qt就算了,与其被别人牵着鼻子走,不如前途掌握在自己手里。再说,当年的qt,自己都找不到鼻子在哪,到现在也一大堆技术栈。
反正jetbrains本身就是java起家,自己有自己的jdk版本,用java太正常了。
再说,你见过哪个卖耗子药的,家里专门养只猫抓老鼠?
当然是成本咯,eclipse用java写不照样很成功么。Jetbrain家明显有一套自己攒下来的类库,没有理由不沿用
当然有原生的设计
swt啊,eclipse就是原生+封装的设计


可以明显看出来原生ui的痕迹吧?
但是有一个问题,就是原生的wrapper弄出来之后,会导致不同平台上的ui不一样
如果真的去认真设计的话,每个平台上都要改
那成本就高了,到底是跨还是不跨平台呢?
毕竟ide本身并不是那么在乎性能,所以就用swing一点点改
如果换今天,肯定直接上javafx了,javafx强就强在多了一个图形引擎,prism
对于底层的图形api做了封装,这样到了gui这一层,它就可以保持一致了
jb正在跟oracle合作,将metal接入java
当然swing也没有那么难用,用习惯了也还行,主要是布局太恶心了
远没有javafx里面pane+binding那么方便
flutter的布局也有同样的毛病
JetBrain一开始是做Java IDE起家的,当年他们估计没有精通C++/Objective-C的人。你看第一个原生语言支持的IDE也就是AppCode哪一年才出来?之前攒下了无数代码也不可能整个重写一遍。
it业界内有个术语叫自举.
大概意思就是java开发用到的ide,第一个版本用其他语言实现,之后需要用这个ide来重新实现一个java ide,才算完成自举。
这个自举的理解是错的,但意思差不多是这个意思。
可能是因为用java的缘故吧,不可能写java程序然后用其他语言的ui吧,感觉会更麻烦
因为用来写Java的工具如果不是Java写的,那么在写Java的每时每刻都会感到惶恐、不安、内疚、自责和崩溃,对,就是这样。。。
c# ui不跨平台, qt成本高?
感觉像是抄的eclipse
因为Java的最大用处是用来写Java的IDE呀,哈哈
当年没什么太好的选择,就今天来看,也没什么太多的选择,javafx算是能打的。
除了vs code,我没见过哪个Java的IDE不是用Java开发的。
最开始的IDEA是java写的,后面再搞别的,拿过来改一改不比从头开发省事么?
我胡乱吐槽一下,IntelliJ作为卖得最好的商业开发工具(这点非常不容易,因为开发工具市场从2000年开始就被开源产品冲击得基本消亡了),和卖得也非常好的MineCraft一样,专门来打那些Java Hater的脸的
JB现在正在用 kotlin 逐步重构GUI
説不定日後會用avaloniaui重寫
因为来源软件一开始用的就是java啊
这就好比,我是厨师我为什么要吃自己做的饭。
那不就是为了证明自己做的饭是能吃的嘛
稍微对比jetbrains和visual studio,就会发现Java gui臃肿、卡顿、廉价的质感,这种类eclipse的塑料劣质感深深根植于Java ,不会随着jetbrains的升级换代而消失,只有这时,才能体会到c++gui的高贵优雅的贵族特性
换个角度想想,即使是现在,如果开发一个非常有竞争力(意味着非常多的代码),也要在多个平台下运行IDE的话有比java更好的选择吗?
因为没有别的选择啊。跨平台一致性这个太重要了,现在 pc 和 mac 上切换这用 intellij 写 java 舒服方便。
跨平台吧
除了 JB 家的 IDE 产品,还有哪个 IDE 能提供 mac,linux,win等平台几乎一致的开发体验
开发成本也低,一次开发,随便部署
安装包也小,自带jdk都能只有几百兆,没有乱七八糟的依赖
缺点吗,性能还行,就是这个内存占用有点高
话说,跨平台最好的解决方案个人感觉还是像 go 那样,一套源码,不同平台不同编译
为了教会我们怎样写swing
.NET平台很棒。真的很棒。直到它不再那么棒。我为什么不再用.NET?简单来说,它限制了我们选择的能力(对我来说很重要),转移了我们的注意力,使得我们向内认知它的安全性,替代了帮助我们认知外面广阔世界的所有可能性。
[系好安全带:这个文章的长度几乎成了一本书…]
优点
首先让我开始说说.NET做得对的许多事吧,尽管这其中的大多数并不来自.NET本身,但却是由.NET社区而来。
C#
C#令人惊叹。我认为它是一个令人惊叹的编程语言。从强大的C语言背景而来,我彻底地喜欢其语法,流和这门语言的所带来的感觉。当然有我可能改变的事,但总体来说它是一门扎实的语言。并且基于开发人员使用的编程语言如此巨额的百分比和Windows操作系统的优越性,它是一门众所周知的语言。
ReSharper
我也很喜欢Resharper。在JetBrains工作的开发者们都是奇迹般的人。如果没有ReSharper和一些相关的工具,我可能并不会如此喜欢C#。
BDD and MSpec
我也很喜欢简称为机器规格(mspec)的BDD风格的框架。它是一个令人惊叹的测试框架,真正支持在测试中使用正确的语言测试本身。在使用mspec之前,我的测试真是一团糟并且很碍我的事。
另外,当我们创建GoConvey—基于Golang的BDD测试框架的时候,Mspec对于我的组织来说是一个巨大的灵感和激励。
多语言运行时
我认为多语言的CLR(公共语言运行时)的观念真得使得JVM的世界思考着。我不知道任何非Java的JVM语言在CLR之前,但随着“公共语言运行时”的到来,我的理解是这使得使用JVM的人们向前进并且最终创造了如Scala和Clojure这样伟大的JVM编程语言。如果我错了请纠正我。再者,CLR使得Sun公司的人们坐下来并关注它,因为Java有一点陈旧并且随着Java 8的到来,仅仅现在才在多个方面追赶着。竞争是一件非常好的事。
NuGet
另一个显著的例子是NuGet。这个包在Windows中作为一个整体特别是在Windows的开发中,它的管理轶事是糟透的。NuGet解决了很多问题,他们也通过从Python和Ruby借用了很多东西去做了很多正确的事。有改进的余地吗?当然。但比起其他一些选择在这儿或那儿的包升级来说,我还没有感到使用NuGet有这许多痛楚。
应该是多语言开发的混合项目。安装目录下不仅有jar还有dll
没有这个问题的话我还一直以为JetBrains 的UI也是用C++写的
有人说java gui卡顿?要不卡顿,你用其他线程去处理任务,别祸害渲染页面的线程就行了,多线程恰恰是java擅长的。
javafx都开发到21了,还在讲swing呢?现在javafx都有跨pc/android/ios的商业开发软件,gluon,不过是收费的。
java可能比c和rust的内存占用会多一些,不过现在java有虚拟线程。
好吧,现在网上说这个软件不好,那个软件跌落神坛,这个产品不能延续了,那个产品以后完蛋了,这个作者江郎才尽了,那个作品后半截不是原作者写的了,全都是有动机的。我扯那么多干嘛呢,和我没有半点关系。
我猜,因为他们在行啊,懂什么就用什么喽。
跨平台方案当然比平台原生方案大大降低成本了
应该是为了跨平台成本吧 但是体验真的很差 尤其低配置的电脑 反观eclipse 都是原生控件 好看而且流畅
这个问题要从工具软件开发历史来看,从上个世纪的工具开发我们可以看到不管是Borland JBuilder,Sun Netbeans,Oracle JDeveloper,BEA Weblogic Workspace等等都是用Java GUI客户端技术开发的,到IBM 的Eclipse才向原生迈进了一步,但其GUI技术在整个Eclipse生态中实在微不足道,还有其他更重要的事情去做,那么既然从历史来看获得成功的工具都是由Java来开发,就没必要另辟蹊径了,而且java lookandfeel技术已为大家提供了更为广阔的自定义空间,就看你是不是有心了,在多年积累模仿日趋完善超过各种前辈后,随即各种创新接踵而至,可以看到这种通过模仿,返回继续修炼内功,基本模式应用,到如今不断创新百花齐放。顺着这个思路选Java GUI技术没问题,有成功的先例在前,没有理由不按自然发展规律去演进。
[收藏本文] 【下载本文】
   设计艺术 最新文章
有哪些对你很有冲击力的设计?
「英语流利说」的使用体验如何?
为什么设计院出的图纸一堆错误?
保时捷中国总裁首度回应「米时捷」:或许好
为什么很多JRPG游戏战斗中可操控角色一般是
设计师都觉得宋体很难看吗?
有哪些看着像 PS 过的照片,实际却没有?
为什么galgame普遍使用自研引擎而不是unity
“角色也有自己的生活”是什么时候开始成为
写代码用哪种字体看起来最舒适?
上一篇文章      下一篇文章      查看所有文章
加:2024-01-17 10:10:39  更:2024-01-17 11:18:50 
 
 
股票涨跌实时统计 涨停板选股 分时图选股 跌停板选股 K线图选股 成交量选股 均线选股 趋势线选股 筹码理论 波浪理论 缠论 MACD指标 KDJ指标 BOLL指标 RSI指标 炒股基础知识 炒股故事
网站联系: qq:121756557 email:121756557@qq.com  天天财汇