Java 作为企业级开发,代码是否需要做混淆? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容 #Wrapper { background-color: #e2e2e2; background-image: url("/static/img/shadow_light.png"), url("//cdn.v2ex.com/assets/bgs/circuit.png"); background-repeat: repeat-x, repeat-x; } #Wrapper.Night { background-color: #1f2e3d; background-image: url("/static/img/shadow.png"), url("//cdn.v2ex.com/assets/bgs/circuit_night.png"); background-repeat: repeat-x, repeat-x; background-size: 20px 20px, 162.5px 162.5px; }
maxxfire
V2EX    程序员

Java 作为企业级开发,代码是否需要做混淆?

  •  
  •   maxxfire 2019-03-17 20:48:56 +08:00 4873 次点击
    这是一个创建于 2400 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我不是做 Java 的,但对这个问题比较感兴趣。
    Java/字节码很容易被反编译,那为何不影响其成为企业级开发的王者,或者说企业级环境下是否要做代码混淆?
    28 条回复    2019-03-18 18:00:42 +08:00
    Cat73
        1
    Cat73  
       2019-03-17 20:55:19 +08:00
    因为一般写的都是业务代码,没什么技术点,又不是什么创新发明。。没什么需要保密的。。。

    一般需要保密是为了防止自己写的垃圾代码被人挖到漏洞然后被黑了

    真的为了防止别人破解你 XX 功能实现原理的,emmm 企业级开发寥寥无几,面对公众的东西可能还有点。。
    murmur
        2
    murmur  
       2019-03-17 20:57:01 +08:00
    关键的东西云服务 要么就卖服务 只能这样了 真的要混淆肯定要落进 c 层
    putaozhenhaochi
        3
    putaozhenhaochi  
       2019-03-17 20:58:19 +08:00 via Android
    Java 作服务端一般不用。 作安卓的需要
    WordTian
        4
    WordTian  
       2019-03-17 20:59:32 +08:00 via Android
    给你坨没编译的代码你都不一定乐意看,或者说不一定能理顺逻辑。更别提编译过的代码了

    公司有一定安全性需求那就混淆呗,也就一个配置文件的事

    企业开发首选是因为国内 java 的生态,库多,程序员多,开发出来的东西不容易有大问题
    maxxfire
        5
    maxxfire  
    OP
       2019-03-17 21:07:45 +08:00
    @Cat73 这个理由不错,哈哈
    maxxfire
        6
    maxxfire  
    OP
       2019-03-17 21:10:52 +08:00
    @WordTian 所以 java 它 1 臃肿 2 性能差 3 内存占用高,然后它还是上位了,这是我最佩服 java 的地方
    sampeng
        7
    div class="sep3"> sampeng  
       2019-03-17 21:34:39 +08:00 via iPhone
    是能反编译不错。android 需要混淆是因为人人都能拿到 apk 包。字节码被玩坏了。但是服务端嘛。首先、你要能进到服务器。我就是把密码写在文件上,你进不来…什么都是假的。你就是军工级加密。只要让我进来了…对不起,你就是一个在裸奔的舞女
    DsuineGP
        8
    DsuineGP  
       2019-03-17 21:39:18 +08:00   1
    @maxxfire 性能..差..?那你是没跟 node,py 比..
    能这么普及的原因是比 java 性能好的,没他简单;比他简单的没他性能好;比他简单又比他性能好的,库又没他多;
    prenwang
        9
    prenwang  
       2019-03-17 22:29:45 +08:00
    @maxxfire java 性能不差,不了解 jit 不要乱说, 内存占用高只能说他不适合低配或嵌入式等资源紧张的场景,实力企业配置的服务器内存都用不完,所以内存根本不是问题,磁盘更不是问题,Elastic 处理 PB 级的数据,自身的臃肿比起来如九六一毛,java 能繁荣是因为他有好爹,好干爹,朋友圈都是大腕,项目做起来都是大框架大格局。

    一般人是不懂王健林的“小目标”的。
    anguiao
        10
    anguiao  
       2019-03-17 22:33:12 +08:00
    JVM 已经是最强的 VM 了,如果这还算性能差的话,那我也没什么好反驳的。
    sampeng
        11
    sampeng  
       2019-03-17 22:42:48 +08:00 via iPhone
    @DsuineGP 我以前也是觉得 java 慢。但和 node 比起复杂业务的时候。node 得叫爷爷…
    jzmws
        12
    jzmws  
       2019-03-17 22:56:51 +08:00
    首先 Java 屏蔽了底层硬件的不同,让程序员专注于业务
    rogwan
        13
    rogwan  
       2019-03-17 23:01:38 +08:00 via Android
    @DsuineGP 比他简单又比他性能好的,库又没他多
    你是说 go 吗?
    sampeng
        14
    sampeng  
       2019-03-17 23:11:46 +08:00 via iPhone
    @rogwan go 比 java 的库多? go 才流行多久。java 流行了多久… go 能企业级用的库。在每个领域下都只有为数不多的几个…
    wmhx
        15
    wmhx  
       2019-03-17 23:15:30 +08:00
    @rogwan C 也同理.
    Cat73
        16
    Cat73  
       2019-03-18 00:06:41 +08:00
    @maxxfire Java 运行速度并不是太慢,内存吃的多一点也可以加个内存条解决,Java 解决的是可以用水平不是太高的程序员写不是太复杂的代码(只需要业务代码、CRUD 什么的,不需要自己管理内存呀指针呀什么复杂的东西),就能快速做出差不多能用,性能不是太差的东西

    对管理者大概就是,低成本(不需要太强的人)快速出可接受的东西(性能不是太烂,不是太容易出漏洞)

    转隔壁 Objective-C 看看,自己管理内存多恶心。。

    哪怕到了 Swift,也会存在不支持自动回收循环引用对象的问题。。

    隔壁 C# 其实这方面做的也不差,开发者少大概是因为前些年只能跑在 Windows 上,然后 Windows emmm,屁事比较多,我们的服务器版 Windows 虽然不强制更新,但还是整天一连上就提示有更新,而且严格来说并不免费,有额外的成本,而且系统吃掉的硬件明显要高于 Linux。。。

    以上为个人理解喵~
    xuanbg
        17
    xuanbg  
       2019-03-18 08:28:44 +08:00
    一般的 Java 代码都部署在服务器上,外人根本接触不到,所以也就不需要混淆加壳这些乱七八糟的。
    maxxfire
        18
    maxxfire  
    OP
       2019-03-18 08:48:52 +08:00
    @Cat73 除了企业级后端也就算了,现在连做大数据也用 Java 了,这让以性能著称的 C++情何以堪。。
    Allianzcortex
        19
    Allianzcortex  
       2019-03-18 09:04:41 +08:00 via iPhone
    @maxxfire 更多是路径依赖吧,最早的 hadoop 是用 java 写的,之后就都离不开 JVM 生态圈了,那个时候万兆网卡和 SSD 还没这么普及开,IO 速度比处理速度重要多了。G 家三件套没有开源应该是用 C++ 写的,clickhouse 也是 C++ 写的
    hellowes
        20
    hellowes  
       2019-03-18 09:25:44 +08:00 via Android
    没必要,你服务器部署肯定不用担心。 最需要担心的是数据安全
    passerbytiny
        21
    passerbytiny  
       2019-03-18 09:30:11 +08:00
    @maxxfire “隐藏源码就能防止抄袭”是一种非常低级,并且狭隘的商业思路。软件开发中最重要的部分,首先是人,其次是设计文档(敏捷开发中则是集体智慧)和资源,再次才有可能是源代码。举个例子,Red Hat 收购 CentOS 后,RHEL、CentOS 一套代码,CentOS 全开源,然而 RHEL 照样能赚钱,因为对于大客户来说,RHEL 有 CentOS 中没有的人和资源。

    @Cat73 建议你换掉头像,否则容易让人产生“女人就是没脑袋”的想法。给你说些事实,Hadoop、Hbase、Zookeeper 的编程语言是 Java,Oracle 部分功能的编程语言是 Java,Kafka 的编程语言是 Scala 运行在 Java 平台上。
    freedomshi
        22
    freedomshi  
       2019-03-18 10:09:20 +08:00
    没必要,因为没价值。
    Cloutain
        23
    Cloutain  
       2019-03-18 11:05:07 +08:00
    关键算法做加密处理,如果是什么管理软件就没必要了,全是业务代码,没有价值,逆向从来只针对自己人无法编码解决的地方。
    上面有兄弟说了 数据安全才是最需要担心的,这点很赞同
    notreami
        24
    notreami  
       2019-03-18 12:58:55 +08:00
    看到大家维护 java,最新我也在思考这个问题。
    1、java 的内存占用确实不太适合微服务。比如想做点小服务工具,但是 java 进程起来就百兆。
    2、最近几年,新出的服务工具,新独角兽,都开始往 golang 上转移的趋势。
    haofei
        25
    haofei  
       2019-03-18 15:55:05 +08:00
    https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=json

    说 java 不行的可以试试这个 看你写的程序能不能跑进前十

    java ee 是不行了 但是 core java 还是很有生命力的
    Cat73
        26
    Cat73  
       2019-03-18 17:38:36 +08:00 via Android
    @passerbytiny 每个需要都会有自己的杀手级应用,可你想一想,这个话题所讨论的普通企业开发,真的是天天在做什么 Hadoop Hbase 这种级别的东西么?并不是的,绝大部分企业都是拿来做一些根本没什么技术难度也没多少性能要求的东西而已,我是基于这个前提来分析了一下国内为何 Java 流行,如果说的话不好听那我很抱歉,但请不要搞人身攻击谢谢
    Cat73
        27
    Cat73  
       2019-03-18 17:40:00 +08:00 via Android
    @Cat73 噗,手机打错字了,应该是每个语言都会有自己的杀手级应用
    zoe1026
        28
    zoe1026  
       2019-03-18 18:00:42 +08:00
    @passerbytiny 头一回看到因为头像怼人,“女人就是没脑袋”的想法您是从哪里得出来的结论?你的母亲?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1009 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:29 PVG 02:29 LAX 11:29 JFK 14:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86