[讨论] 不知道哪些公司在招Java虚拟机方面的工作

sundreams2009 2013-10-22
最近这几个月一直在利用业余时间看Java虚拟机方面的资料,包括Java虚拟机规范,javavm源码等,想找个JVM方面的工作,在网上投了些这方面的工作没反应,是不是现在招这方面的比较少啊
blueyy617 2013-10-23
确实少,感觉就那么几个公司需要JVM方面的人:Oracle、淘宝、IBM,其他真正做JVM的还有么?
sundreams2009 2013-10-23
其他公司我投的有跟智能卡相关的,有跟javacard相关的,有跟芯片相关的,到目前为止还没有什么反应
RednaxelaFX 2013-10-24
请问楼主之前的背景如何?

从刚接触JVM只花几个月时间恐怕能了解的东西还比较有限,特别是如果先前对高级语言虚拟机这个大方向了解不多的话。直接参与JVM实现的工作可能还会比较吃力。看情况。原本的背景、基础知识的扎实程度很重要。

以前我在淘宝的专用计算组参与JVM的定制工作时,组长王琤招JVM方面的开发时最看重的就是基础知识,对C/C++、操作系统(主要是Linux)、基础算法的掌握尤其重要,如果对现代x86或别的体系结构有了解更加分。对具体JVM的知识如果有深入了解当然最好,但如果没有的话这部分次要,还是看基础。
实际与同组的同事合作时,发现基础的重要性确实非常高。当有具体问题需要解决时,具体代码的部分其实很快就能上手,但要补基础就没那么容易。当你隔三差五就要在crash的core dump上做调试时,看着调试器显示出来的一大串十六进制数字如何能联想到问题的根源,有好的基础就可能有清晰的思路要如何去探索,反之则可能会一脸茫然。

如果楼主真的想向这方面发展,而且确信自己基础足够扎实,那我是绝对欢迎!
这个圈子本来就很小,伙伴太少,多一个是一个,呵呵

========================================

话说回来,到底有什么地方在做JVM或者其它高级语言虚拟机的研发呢?说说我听说过的,也欢迎后面有更多人来补充

HLLVM群组的置顶帖就能感受到,既然有那么多知名或不知名的高级语言虚拟机,能混口饭吃的地方肯定也不少。可惜的是,在国内这样的地方并不多。下面列举几个有研发JVM或其它高级语言虚拟机的地方,大家感受一下国内外都有些怎样的机会。

Java SE

Oracle

Oracle主打的Java SE JVM是HotSpot VM。在国内没有参与该JVM研发的团队。
HotSpot VM研发团队主要分布在:
Santa Clara, CA, U.S. <- 大部分原本HotSpot VM的开发团队在这里
Burlington, MA, U.S.
Stockholm, Sweden <- 大部分原本JRockit VM的开发团队在这里
St.Petersburg, Russia
还有一个site在法国但我不记得在哪里了,可能是在INRIA附近。

我之前在Oracle的时候是属于Santa Clara那边的,不过人在国内⋯特例,不算在“国内团队”里。

要去Oracle参与JVM研发的话随时可以投简历试试。我也是去年看了John Rose老大发的博文才去投的。这里可以参与到HotSpot VM的核心研发,包括runtime(线程啊Java Flight Recorder啊之类的都在这边)、JIT compiler(C1和C2)、GC(现在主要针对G1 GC还有No PermGen项目)等等。

Oracle Labs也有在做Java SE相关的研究。Graal的研究如火如荼进行中。Maxine VM现在虽然已经没有官方资助了,但也还算还活着。

---------------------------------------------------------------

IBM

IBM的主打现在JVM就一个,就是自家的J9 VM。
虽然IBM也有从Oracle(以前Sun)购买特许获得HotSpot VM的源码,但针对HotSpot VM的研发不多。

IBM上海有直接参与J9 VM的一小块研发:Multitenant JVM(mt-JVM)。这部分功能在IBM JDK8的Beta版里已经可以使用。Sanhong Li是该项目的技术主管,他的新浪微博是@sanhong_li

在此之外IBM在国内貌似就没啥做JVM研发的了。以前IBM上海有一个组参与Apache Harmony研发,但主要是做类库而不做JVM。Harmony项目终止之后这个组的一部分就转去做上面说的mt-JVM了。

IBM J9 VM的主要研发团队在Ottawa, Canada。这是个有传统的地方,J9 VM的娘家。原本IBM收购了一个叫做OTI的做Smalltalk VM的公司,而J9 VM正是脱胎于OTI的一个名为K8的Smalltalk VM。

J9 VM所使用的JIT编译器,“Testarossa”,则由IBM Toronto Lab开发,位于Toronto, Canada。

IBM Tokyo Research也有做JVM相关研究的,JIT和GC都有。但这边是研究为主,不直接涉及产品。

然后位于Yorktown Heights, NY, U.S.的T.J. Watson Research Center也有做JVM相关的研究,像是优化编译器、runtime之类。

说来,IBM携手SAP为OpenJDK捐献了PowerPC的移植版(包括类库和HotSpot VM的完整移植),很上道。

上海IBM有在做XL系列编译器的研发。

---------------------------------------------------------------

Intel

Intel在北京应该是有一个组做各种高级语言虚拟机的,在Intel China Research Center,以前李晓峰(Xiao-Feng Li)带的组,JIT和GC都颇有研究。不知道那个组现在怎样了呢?
李晓峰现在跑到湾区来了。

Intel做编译器和运行时的人更多在上海。像ICC、路由器上的编译器、二进制翻译(ARM到x86之类)都有在做。

很明显Intel在国内有人做V8以及JavaScriptCore JavaScript引擎的优化。也有做Android Dalvik VM在x86上的优化的,包括全新的JIT编译器和GC。但JVM方面就不知道怎样了。以前Apache Harmony还活着的时候,Xiao-Feng的团队给DRLVM贡献了不少代码。

引用那边提到的:
引用
最近组里招人,为Dalvik的优化和特性开发评测集和用户体验功耗分析,适合想涉足虚拟机领域的青年

有同学有兴趣不?我可以帮忙转发简历过去。

再之前Intel有做过ORP,还有从来没对外发布过代码的Moxie VM
听说做ORP的团队以前在Intel上海有一部分。有爱啊。

还有更早的时候,Sun JDK 1.1时代,Intel给Sun JVM贡献了用汇编实现的优化解释器,使Sun JDK 1.1比JDK 1.0.2的解释器性能大幅提升。嘛这些是历史了。

Intel还有研究Parallel JavaScript的组,不知道在哪里呢?

---------------------------------------------------------------

Red Hat
(有人提醒过这个的正确拼写方式不是Redhat、redhat、red hat,而是"Red Hat"

红帽一直在积极参与OpenJDK的研发。他们不但维护着Linux众多发行版默认的OpenJDK distribution——IcedTea,对应OpenJDK 6、7、8版本,还承担起维护OpenJDK 6的职责

红帽也有做些新东西。几年前他们有赞助为OpenJDK实现了Zero与Shark,使OpenJDK能在更多平台上运行。后来也有
近来他们在领导OpenJDK在ARM8(Aarch64)上开源移植版,这与Oracle自家准备做的Aarch64不是同一个东西,看起来红帽版的进度远快于Oracle自家版。
还有全新的pauseless GC—— Shenandoah。都是非常值得期待的项目。

对了,现在JRuby项目的主要成员也是由Red Hat赞助的。

不过…刚听说红帽在国内的Java职位主要是做JBoss的。没有JVM职位。或许可以远程?

---------------------------------------------------------------

Google

Google算不算全球使用Java量最大的IT公司呢?就算不是最大至少也是“之一”吧。光说Google AppEngine上运行的Java程序就已经有很大规模了。

因此Google有自己的JVM团队,基于OpenJDK定制自己的JVM。不但有bugfix和小功能更新,还有深入到VM核心部分做定制,例如说改造CMS GC让它能归还未使用的内存给操作系统之类的。
据说他们有在为HotSpot VM实现全新的GC,不知道进度如何呢。
没弄错的话这个团队主要在Mountain View, CA, U.S.。没听说国内有这个团队的成员,不过似乎可以远程工作。有同学想去试试不?

另外Google别的高级语言虚拟机团队还有不少。有V8、Dart、Dalvik、ART等VM的团队,主要在美国加州和在北欧。

话说Python团队算不算有一部分在Google呢?以前Google有工程师尝试给CPython添加基于LLVM的JIT编译器,“Unladen Swallow”,后来败了。

---------------------------------------------------------------

SAP

原本就有从Sun购买许可证来获取JDK源码并进行自己的定制。现在这个组也还健在。国内貌似没职位。看这个组的成员名字觉得他们是都在德国的?

SAP对C2的定制挺有意思的。不过让我惊讶的是SAP版的JDK居然也在Itanium上跑。现在还有SAP客户用Itanium啊!

以前(2009左右)SAP有赞助过一个跑在ABAP上的Ruby实现,名为BlueRuby。这个项目原本在上海有组做,但⋯此项目已死好久。SAP决定转向Java之后这个项目就自然死亡了。朋友Haofei表示很郁闷⋯

---------------------------------------------------------------

HP

惠普以前有个组做C3。C3是一个优化JIT编译器,专门针对Itanium(IA-64)而做的HotSpot VM的C2的后端。但这个组现在已经几乎整个没了,剩下的维护工作都转移到印度的组了。
原本这个组还存在的时候,国内在上海也有人参与它的研发。能拜托知情的人补充个详细不?

下面回复有更新,搬上来:
hellhell 写道
HP JVM所有的工作(美国,中国)已经转移到印度了


---------------------------------------------------------------

Azul

主打JVM是Zing。最大卖点是它的pauseless GC。目前在市场上还无竞争者能达到他们的水平。
简单说就是在国内没职位。研发团队在Sunnyvale, CA, U.S.,印度和俄罗斯圣彼得堡。

---------------------------------------------------------------

Waratek

专门做Multitenant JVM的公司。听说之前还去淘宝兜售过,哈哈。没听说它在国内有职位。研发主要在爱尔兰Dublin。

---------------------------------------------------------------

Twitter

Twitter也有基于OpenJDK定制JVM的团队,在加州和在麻省Boston。很明显在国内没职位。
他们最初主要做的时期是为HotSpot VM增加更细粒度的监控功能。但这些工作似乎一直没反馈到OpenJDK上游,而只是有部分在GitHub上开源出来,例如jvmgcprof

就像Twitter之前给REE(Ruby Enterprise Edition)做了名为“kiji”的新GC一样,有传闻说Twitter正在试图给OpenJDK的HotSpot VM也实现新GC。不知道这消息的真实程度,求补充~

---------------------------------------------------------------

龙芯

如果我没弄错的话,在北京的龙芯中科有个组做OpenJDK到龙芯(MIPS)的移植。HotSpot VM的核心VM(包括解释器啊线程啊啥的)和C1应该都早就移植好了,但不知道C2后来有没有移植(有了,看下面更新)。

龙芯对OpenJDK的主要工作就是移植。貌似没余力做别的事情⋯
另外有听龙芯的下游开发者说龙芯提供的OpenJDK移植版的稳定性不大好。这个我没直接经验无法评论。


刚听到@廖彬_ICT提到的更新,
廖彬 写道
龙芯在2012年底已经完成了对C2的移植。至于下层客户反应稳定性不好的情况,确实存在。但是2013年龙芯虚拟机团队致力解决稳定性稳定,龙芯Java虚拟机已经可以达到至少7*24稳定状态。在功能以及稳定性得到解决之后,龙芯Java虚拟机团队转型研究团队。

另外:龙芯Java虚拟机团队预计在OpenJDK8正式版发布同时发布龙芯版OpenJDK8。

研究团队喔。有兴趣的同学去试试?

---------------------------------------------------------------

国内别的CPU厂商

国产CPU当然不只龙芯一家。我是说真的能用的国产芯片,不是以前上海交大的“汉芯”闹剧那种。

例如,

江南计算所
他们有“申威1600”。而且多半有尝试将OpenJDK移植到该CPU上。能正常运行Java对推广该CPU在民用方面的应用,特别是服务器端应用很有意义。

国防科技大学
“飞腾”系列,基于OpenSPARC。既然是基于SPARC指令集,这个系列的CPU在移植方面应该不用做啥麻烦的事?作为学校科研这边肯定是有做JVM研究的,读过一些他们把Apache Harmony的DRLVM移植到SPARC的论文。不过产品方面有没有JVM研发工作我不清楚。有人知情不?

---------------------------------------------------------------

阿里巴巴(广义的阿里系)

据我所知,阿里系是国内使用Java规模最大的地方,因而对Java平台的各种需求也很强烈:从Java代码层调优,到JVM参数调优、JVM编译优化、JVM特殊功能定制开发、Java crash处理,等等。

调优的需求贯穿整个阿里系所有用Java的地方都需要。如果有这方面技能的话估计在阿里系随便找个平台架构组之类的都能去。

而更深入到JVM内部的工作的话,

阿里巴巴集团的核心系统部
里面有个专用计算组,这也是我以前在的组,组长是王琤,前面提过了。工作地点可以在北京和杭州之中选一个。原本核心系统部属于大淘宝,后来整个移动到集团下面了。
这个组的工作内容可以参考组长以前做的一个访谈:淘宝王琤:Taobao JVM的性能优势与价值体现
Taobao JVM开源在http://jvm.taobao.org/index.php

更新:这个组现在被挪到阿里云的“技术创新组”了。

阿里云OS
阿里云OS能兼容Android运行用Java语言编写的应用程序,里面自然也有跟JVM对等的东西,叫做Lemur VM。它与Android的Dalvik功能相似。负责研发阿里云OS里的各种高级语言虚拟机(主要是Lemur VM,还有V8之类的JavaScript引擎的定制)的组在北京和杭州。应该还在招人。确认了一下,是还在招人不过名额似乎很有限,所以现在招不了应届生,只能招现成的大牛。求大牛!!

天猫
最近有扩张的势头,有兴趣招对Java调优有丰富经验的人。如果能深入定制JVM更好。
很明显他们想尝试使用JVM直接支持的coroutine。有人想帮帮他们的忙不?

有兴趣去这三个地方都欢迎投简历给我,我可以转给里面合适的同事。

========================================

嵌入式Java(主要是Java ME/JavaCard)

呃。说真的我不太清楚这部分到底怎样。以前Sun在北京的部门似乎是有做Java ME很核心的部分,但我不知道Monty(又名CLDC HotSpot Implementation,缩写CLDC-HI)和CVM(又名CDC HotSpot Implementation,缩写CDC-HI)有没有在国内研发过,只知道这俩VM都有元老是华人。现在CVM已经取消了,只剩Monty。

其它肯定还有很多公司在国内有做嵌入式JVM的移植之类的工作。最典型的是移植KVM或者Monty到一些私有芯片上。但这方面我也不太清楚。欢迎补充!

========================================

其它高级语言虚拟机

CLI (Common Language Infrastructure)

微软

微软以前在上海有过CLR团队,主要做Silverlight相关的研发(对应也就是CoreCLR了)。但那个组2009年解散了。

微软做CLR的团队应该主要在Redmond, WA, U.S.。以前在澳大利亚可能也有一部分,但不知道后来怎样了。

微软当然还有好多其它高级语言虚拟机。从IE9开始随IE发布的Chakra JavaScript引擎是其中一个。这个的工作地点不知道是不是Redmond和印度都有?

---------------------------------------------------------------

Mono

本来在Novell的,后来整个团队独立出来自己开了个公司。没听说在国内有职位。

---------------------------------------------------------------

JavaScript

Mozilla

SpiderMonkey,还用多说什么么?

团队分散在全球各地,大部分是远程办公吧。
在Palo Alto, CA, U.S.有一个点,在新西兰也有个点。其它还有哪里有来着?

---------------------------------------------------------------

Apple

苹果有JavaScriptCore(宣传代号是Nitro)。它的研发团队主要在Cupertino, CA, U.S.吧,总部那边。

苹果以前有自己定制从Sun买许可证得到的JDK,不过最新就到JDK6。从JDK7开始他们就不搞了,交回给Oracle弄。

---------------------------------------------------------------

UC优视

看这个职位描述,很明显在广州的UC有做JavaScript引擎的定制研发。
据说UC在不同平台上的版本把三大开源JavaScript引擎都用了:V8、SpiderMonkey、JavaScriptCore。

---------------------------------------------------------------

奇虎360

应该是有针对V8的定制。办公地点在哪里有谁补充一下,北京?

---------------------------------------------------------------

腾讯

腾讯也有做浏览器的部门在招JavaScript引擎的优化的人。似乎是基于JavaScriptCore的。貌似有趣。

---------------------------------------------------------------

Opera

Opera原本有自家的Carakan JavaScript引擎。后来转向基于Blink做他们新的浏览器核心之后,Carakan就被搁置了。不知道它的研发组怎样了呢。原本那个组主要应该在挪威?没听说国内有Carakan的研发职位。

现在Opera在JavaScript方面研发的重点应该转向基于V8了吧。

不过国内的欧朋浏览器还在用之前的Opera Presto内核,也就意味着它里面的JavaScript引擎还是Carakan。基于它的游戏引擎Sphinx也还在用Presto/Carakan。所以这个引擎还算没完全死掉。

---------------------------------------------------------------

PHP

Facebook

HHVM! HipHop VM!!

这个PHP虚拟机项目绝对是现在的大热门。Facebook很肯烧钱投入进来把它的性能极限不断推高。例如说准备实现全新的、现代的高性能GC。有兴趣有能力的同学一定要去试试啊。
不过很明显在国内没职位。开发HHVM的团队应该大部分在加州?既然是开源项目,全球都有代码贡献者,差别是“职位”这种东西有工资,单纯的外部贡献者就⋯

HHVM现在的GC还稍弱。但接下来会有强力外援介入,有望大幅提高它的GC性能。

---------------------------------------------------------------

Ruby

Heroku

CRuby的核心团队成员现在应该都在Heroku了吧?不用说,这些成员都在日本。国内不太有机会指望找到CRuby的开发职位⋯

---------------------------------------------------------------

Engine Yard

现在啥也没了。以前Engine Yard赞助了Rubinius和JRuby。但现在都已经不再继续赞助。
sundreams2009 2013-10-24
非常感谢大R的回复啊,我之前学了5年计算机科学与技术,感觉基础还可以的,自己在学校的时候也有尝试自己做Pascal编译器,所以感觉对编译器这块了解的多一些,所以现在对Java虚拟机也很感兴趣的,最近也一直在看JVM方面的资料,基础知识这方面有段时间没看了,我温习下之后发简历给您吧,再次感谢您啊
RednaxelaFX 2013-10-24
sundreams2009 写道
非常感谢大R的回复啊,我之前学了5年计算机科学与技术,感觉基础还可以的,自己在学校的时候也有尝试自己做Pascal编译器,所以感觉对编译器这块了解的多一些,所以现在对Java虚拟机也很感兴趣的,最近也一直在看JVM方面的资料,基础知识这方面有段时间没看了,我温习下之后发简历给您吧,再次感谢您啊

不错!楼主努力努力以后我们的同行就又多一位了,哈哈~
既然是对编译器比较了解,那接下来多看看JIT编译器相关的内容会比较好。有趣的是没啥教科书讲JIT编译器的,都是论文和源码。
sundreams2009 2013-10-25
恩,会的,呵呵,我在网上也再查查jit方面的资料
blueyy617 2013-10-25
R大回答的真详细,谢谢R大!
总的来说JVM在国内这块可以去的公司还是有的:各种有名的外企、国企、国产化软件公司等等,但是大部分对基础知识要求比较高。
runshine 2013-10-25
RednaxelaFX 写道
天猫
最近有扩张的势头,有兴趣招对Java调优有丰富经验的人。如果能深入定制JVM更好...

R大能大概说一下这个“Java调优”所包含的工作内容有哪些么? 看您后文又说他们并不绝对需要改动JVM...
RednaxelaFX 2013-10-25
runshine 写道
RednaxelaFX 写道
天猫
最近有扩张的势头,有兴趣招对Java调优有丰富经验的人。如果能深入定制JVM更好...

R大能大概说一下这个“Java调优”所包含的工作内容有哪些么? 看您后文又说他们并不绝对需要改动JVM...

调优嘛,常规项目呗:
熟悉Java应用层/JVM层/OS层的监控
根据监控得到的数据对Java源码、JVM参数、OS参数做修改
不涉及修改JVM。

但是“如果有能力定制JVM”更好。想做些新功能的尝试。
Global site tag (gtag.js) - Google Analytics