V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
purensong
V2EX  ›  程序员

Java 程序员进来回答一下

  •  
  •   purensong · Mar 13, 2020 · 3586 views
    This topic created in 2241 days ago, the information mentioned may be changed or developed.

    做 java 的一般都用过 lombok,而对 lombok 的原理想必知道的也清楚是通过 javac API 实现。我想知道还有什么类似的开源工具会用到 javac API,编译的时候去做的事,什么样的项目会有涉及,想深入学习一下。 至少我开发这些年还没深入研究过编译 ,语法解析,感觉挺神秘的。因为单靠一个注解就帮你在编译的时候塞进了很多代码。

    24 replies    2020-03-17 18:27:33 +08:00
    zhuawadao
        1
    zhuawadao  
       Mar 13, 2020   ❤️ 1
    我寻思你这也都是陈述句啊。
    wysnylc
        2
    wysnylc  
       Mar 13, 2020
    抱歉,没用过 lombok
    luckylo
        3
    luckylo  
       Mar 13, 2020 via Android
    map struct 貌似是这么写的吧
    bbao
        4
    bbao  
       Mar 13, 2020
    抱歉,都没听过 lombok,不知道是啥
    guili618
        5
    guili618  
       Mar 13, 2020
    建议你看下这个帖子 https://www.iteye.com/topic/517796,你就明白大神是怎么干的了,
    这位哥们后来去了淘宝开发 TDDL,后来离职自己出来一个人写了个数据库
    luckylo
        6
    luckylo  
       Mar 13, 2020 via Android
    @luckylo 我貌似
    luckylo
        7
    luckylo  
       Mar 13, 2020 via Android
    @luckylo 弄错了
    Jooooooooo
        8
    Jooooooooo  
       Mar 13, 2020
    不如直接深入学习 java 虚拟机
    guili618
        9
    guili618  
       Mar 13, 2020
    https://www.iteye.com/topic/517796

    我佛了,V2 咋连编辑都不让……
    hdbzsgm
        10
    hdbzsgm  
       Mar 13, 2020
    有些人的 ide 可以自动生成 getter setter 什么的 lombok 没处用
    Cbdy
        11
    Cbdy  
       Mar 13, 2020 via Android
    举几个例子
    静态代码分析,如:findbugs、spotbugs
    编译期依赖注入,如:dagger
    代码生成工具,如:vertx-codegen
    WayneCmd
        12
    WayneCmd  
       Mar 13, 2020
    cglib 动态代理可以研究一下
    beidounanxizi
        13
    beidounanxizi  
       Mar 13, 2020
    这玩意 没啥好研究的 不得不说 反射 被某些脑残 Java 开发拿来作为技术现象很普遍一直是我最讨厌 Java 的点,
    chashao
        14
    chashao  
       Mar 13, 2020 via iPhone
    我 c#程序员进来看看
    guyeu
        15
    guyeu  
       Mar 13, 2020
    annotation processor 用得很广泛了,lombok 实际上也是 hack 了一些东西。。类似功能的还有 Autovalue 之类一大堆工具( java 程序员为了少写代码做了很多工作)。。

    仅仅是用到 javac 的 api 的话,阿里的 arthas 基本上算是个百科全书了。。
    find
        16
    find  
       Mar 13, 2020 via iPhone
    这个 是 JSR 269 规范里面 plugin annotate process api,我觉得楼主不适合做程序员,这么简单的事情 关键查找一下就知道了,需要在这里问?
    chendy
        17
    chendy  
       Mar 13, 2020
    直接搜 annotation processor 就是了
    fantastM
        18
    fantastM  
       Mar 14, 2020
    purensong
        19
    purensong  
    OP
       Mar 16, 2020
    @find 嗯嗯,多谢提醒,我有点不爱看文献,想过来和 v 友聊几句,没想到秀智商了。。
    purensong
        20
    purensong  
    OP
       Mar 16, 2020
    @zhuawadao 不是啊,我第二句不是问 我想知道...,我表达的不够好吧,其实就是过来问问大家有没有类似的开源代码可以学习,发散一下自己的思维,忘了提阿里的阿尔萨斯,罪过罪过。
    purensong
        21
    purensong  
    OP
       Mar 16, 2020
    @beidounanxizi 这个好像不是反射吧
    purensong
        22
    purensong  
    OP
       Mar 16, 2020
    @hdbzsgm 是的,程序员虽然工作只要会用就行,但是有时还是好奇它是怎么做的,有没有类似的场景思路,以后遇到问题多一条路选择也是好的
    beidounanxizi
        23
    beidounanxizi  
       Mar 17, 2020
    @purensong annotation processor 楼上说了 这个东西嘛 刚开始还有点好奇 其实就是那么回事啊 注解么 还能有啥
    Chinsung
        24
    Chinsung  
       Mar 17, 2020   ❤️ 1
    这个东西凑巧研究过,lombok 本质上还是 annotation processor,只不过他本身封装的比较有水平,对相关 api 也有一定具有深度的探索,把原生提供的语法树节点封装成了自己的一套。不过 lombok 对语法树的很多操作比较有借鉴性,查文档不如看源码。
    至于类似的原理,主要看下 META-INF 里的 javax.annotation.processing.Processor,有这个的都是带这个原理的。
    主要还是切面和代理的框架使用的多,比如切面框架,dubbo。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2434 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 15:33 · PVG 23:33 · LAX 08:33 · JFK 11:33
    ♥ Do have faith in what you're doing.