这段时间我研究了一下java虚拟机规范,感觉编写一款符合JDK1.4规范的java编译器并不是很难,理由如下:
1) java虚拟机中的指令是面向堆栈的结构,指令的操作数绝大部分都隐含在堆栈中,因此代码生成非常容易
2)java编译器不需要作任何优化,公共子表达式消除、循环不变量外提、寄存器分配等优化全部都是在虚拟机中进行的。如果使用lex/yacc等编译自动话工具的话,我觉得大家合作好的话用两个月(保守一点最多就3个月吧)就可以完成一个实用的java编译器了,我说的实用是指能够取代jdk   1.4版中的javac此外,我打算使用C语言来开发这款编译器,这样编译的速度也会比使用java编制的javac快很多啊,不知道我的想法对吗,CSDN的高手们谈谈想法啊。

解决方案 »

  1.   

    如果你说要开发一个汇编编译器我还相信...java...
      

  2.   

    lhfzd2004(风之刀)  
    john_sheep(彩虹勇士)
    谢谢2位支持如果你说要开发一个汇编编译器我还相信...java...
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    to千金散去还复来:你凭啥看不起人!!!
      

  3.   

    不凭啥,就凭你会在论坛上发表这样的帖子。
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    我们要做的是Java编译器又不是去做JIT编译器,把Java程序翻译成非优化的字节码并不复杂啊哈哈,裤衩牛人!
    ~~~~~~~~~~~~~~~~
    什么叫作裤衩牛人啊?
    最后我想说的是,我想召集一些高手共举大事,希望没兴趣的人不要说风凉话!!!
      

  4.   

    对了,还要请教大家两个问题:1) 谁有javac的源代码,我想参考一下子,谢谢!!!2) 为什么javac.exe这个文件这么小啊?在我的机器上只有49K(49266字节)  晕死了,比我用vc++写的hello       world还要小好多啊。虽然javac并不复杂,但是可执行文件只有50K实在是叫人难以置信,难道javac是SUN的工程师用汇编语言写的,  那真的是太牛鼻了,哪位高人能解释一下子撒? 
      

  5.   

    我粗略的算了一下:
    假设X86指令的平均长度是5个字节,
    那么50K的可执行文件就包含有10000(50K/4)条机器指令假设每行C语句被翻译成5条机器指令(平均情况),
    那么10000条指令相当于2000行C语言代码javac.exe再简单,也不可能用2000行C代码就搞定吧,好歹也是个编译器啊。
    有高手知道为什么吗?
      

  6.   

    如果javac只有2000行C代码的工作量的话,应该不是很难的!!!如果javac只有2000行C代码的工作量的话,应该不是很难的!!!如果javac只有2000行C代码的工作量的话,应该不是很难的!!!
      

  7.   

    大哥们做梦呢
    javac只是一个启动器
    实际解释不是它
      

  8.   

    不是我想鄙视你,你连javac都搞不清楚,还3个月不到开发java编译器。
      

  9.   

    只能这么来猜测你,要么你是比Anders Hejlsberg还猛的编译器开发牛人,要么就是刚看了几本C语言关于编译器开发的资料的突发狂想。
    我3个月以后来关注一下这个帖子,看看你开发的编译器运行效果怎么样。
      

  10.   

    qq.exe 有1.69m 那么大    那么整个qq程序就1.69m?
      

  11.   

    大哥们做梦呢
    javac只是一个启动器
    实际解释不是它
    ~~~~~~~~~~~~~~~~~~~
    什么意思啊,实际解释不是它,那是谁啊?
    不是我想鄙视你,你连javac都搞不清楚,还3个月不到开发java编译器。
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    大家都穿一条裤衩,你有什么牛鼻的地方呢?我也不想鄙视你。
    javac.exe的源代码在哪里?
    谁有javac的源代码
    请发到.cn,小弟提前谢谢了。
      

  12.   


    to:java_bian_yi_qi() 
    我虽然一个裤衩,但是知道javac是个什么,你什么都不知道还大言不惭的说保守估计3个月不到开发编译器。我鄙视吹牛的人怎么了。
      

  13.   

    TO xialian:但是知道javac是个什么
    ~~~~~~~~~~~~~~~~~~~~~~~~
    诚心请教您javac是个什么东东,
    为什么只有50K,
    它的主体在哪里啊,
    javac的源代码在哪?我鄙视吹牛的人怎么了。
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    我上大学的时候看过编译器的龙书,
    并不是你想象中的什么都不知道啊
    觉得像java编译器那样不做优化应该不难吧
    javac确实没有做优化,
    通过javap -c命令反汇编java编译器产生的字节码可以证实这一点。我没有说是一个人做啊
    现在研一,时间比较多
    感觉拉几个高手大家一起搞,
    大家几个月应该能搞定的。PS: javac.exe的源代码在哪里? 有人知道吗
      

  14.   

    你写一个程序都放在exe吗,没有dll吗?再说javac源代码网上你搜索一下不就可以了,如果搜索找不到就不要指望找别人要了。
    我觉得你不是在找人合作开发编译器,而是希望别人怎么指导你开发编译器。
      

  15.   

    楼主真强,睡梦中登录CSDN发贴竟然没打错字~~~~~~``
      

  16.   

    楼主真强,睡梦中登录CSDN发贴竟然没打错字~~~~~~``
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    用不着这样讽刺人吧,我很清醒。我现在已经开始动手写代码了,如果实在没人愿意参与的话,我就单干了,哎,CSDN让我很失望。
      

  17.   

    up
    可惜我實在不會,不菜一個,不然我一定來一個..KK
      

  18.   

    其实吧,,做个bat 保守估计1个星期 就ok了
      

  19.   

    有时间和能力写编译器还不如自己开发个专业领域的JVM呢。
    建议你去研究二进制码注入(class注入),AspectJ正是火的时候,为AspectJ编译器提点性能作作贡献也不错。
      

  20.   

    Java的语法解析才是关键,Java可不是汇编语言啊
    JVM规范早看过了,实在没有楼主那么有雄心啊,哈哈,佩服!
      

  21.   

    qq14923349(剑神)) 
    lrcheng999
    hdhmail2000(禅剑飞雪)
    谢谢你们,我已经开始动手做了,做完之后,我在来向大家汇报。其实吧,,做个bat  保守估计1个星期  就ok了
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    有话直接说,不用拐弯摸脚的,为什么中国人总是看不起中国人呢?
      

  22.   

    楼主研究过JavaCC了吧?Java Compiler用的是JavaCC,跟yacc也差不多
      

  23.   

    It's hard for me! pass........
      

  24.   

    我挺感兴趣,有机会交流,MSN:[email protected]
      

  25.   

    小弟对这方面也很感兴趣 可是实力还不够 不然一定参加  去这里看看吧 希望对你有用http://www.java.net/
      

  26.   

    javac只是一个启动器了!支持一下!但本人时间和水平很有限!纯支持!搞出来了要记得拿出来玩玩哦!
      

  27.   

    都是些风言风雨的人,lz支持你.javac是什么并不重要.
    重要的是你有了一个想法,并且能够不断的坚持下去.
      

  28.   

    小兄弟你学过编译原理不?
    知道编译器是怎么处理的不?
    知道这牵涉一系列算法不?
    知道这其实不是那么容易的不?
    知道javac是比你牛百倍的人写的不?
    知道就算你写出来也没多大意义不?
      

  29.   

    -.-! JAVA菜鸟飞过~ 楼主加油,其实不管你的想法是对还是错,都去实践吧~对了是开拓,错了是学习,都很好!!加油~~~~~~~~~~~~~~~~~~~~~~~~~
      

  30.   

    这个问题自从Java面世就一直在考虑中吧
      

  31.   

    楼主对JVM了解多少?
    先花个几个月时间了解了解再谈其他吧!!