·

JAVA是否最适合企业应用开发?

当我刚入行做程序员的时候,那是在01-02年,铺天盖地的都是java,j2ee,公司也使用java作为开发语言,我也就随大流加入javaer阵营。 
从那时起,各种java的术语,框架,模式铺天盖地。被动接受后也理所当然的认为java就是最适合企业开发的东西。 
后来一个项目使用了oracle,weblogic,吞吐量单JVM也就80req/s,还经常终止服务,挺好的服务器,业务也不复杂啊。因为并发不能满足,又扩容了设备。那时就有个想法,试试别的架构。后来把相同的逻辑在LAMP上实现了一遍,第一次写php,没什么经验,第一次配mysql也没什么经验,但结果在同一台服务器上可以做到500req/s。这件事就让我对java产生了一些疑问。

从以下几点讨论 
  1、开发效率:如果和C++比,java的开发效率是要好一些的,但是和php不在一个水平线上。 
  2、易维护性:java语言本身没有太多可以出格的用法,C++和php都可能写成一些极难理解的代码(python/ruby也一样),但是C++11和php5以后,代码的规范性还是比较好保证的。 
  3、运行效率和可靠性:这个要分开说 
在web层上,java的thread是pthread,应用服务器一般要起线程来维护请求,nio connector是不适合thread local的框架的。php使用nginx+fcgi,是按照cpu核心数启用进程的方式,不用担心线程安全问题。java共享heap,在java.util.concurrent出现之前,容器类的线程安全很低效(严重感谢Doug Lea,他还是collections的作者),java的类库都是java写的,很多性能n并不好。php是的哲学是在请求时获得资源,请求结束释放,同时类库都是c/c++完成的,简单高效。在php中短连接性能很好,在java联个什么都需要连接池。 
在有复杂运算的场景下,php的性能确实会是一个很大问题,而java性能会好很多,但是java并不能有效管理大内存(基于 mmap的direct buffer也还不理想),同时fullgc的问题对于响应及时性要求高的系统根本不能用。这部分是c/c++的天下。

所以我的理想框架顺序是

php
php+thrift+java
php+thrift+c++

  

总之,个人认为java是大厂联合推销软硬件的阴谋。嘿嘿。。。

转载自:  作者:hanxuebo  链接:https://www.iteye.com/blog/hanxuebo-1845849

·

··············

JAVA是否最适合企业应用开发?的更多相关文章

  1. Java企业微信开发_03_通讯录同步

    一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步”  ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取 ...

  2. Java企业微信开发_07_素材管理之上传本地临时素材文件

    一.本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要 ...

  3. Java企业微信开发_05_消息推送之发送消息(主动)

    一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接 ...

  4. Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)

    注: 源码已上传github: https://github.com/shirayner/WeiXin_QiYe_Demo 一.本节要点 1.1 授权回调域(可信域名) 在开始使用网页授权之前,需要先 ...

  5. Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器

    一.本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要 ...

  6. Java企业微信开发_05_消息推送之被动回复消息

    一.本节要点 1.消息的加解密 微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip      ,此包中封装好了AES加解密方法,直接调用方法即可. 其中,解 ...

  7. Java企业微信开发_04_消息推送之发送消息(主动)

    源码请见: Java企业微信开发_00_源码及资源汇总贴 一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息 ...

  8. Java企业微信开发_03_自定义菜单

    一.本节要点 1.菜单相关实体类的封装 参考官方文档中的请求包的内容,对菜单相关实体类进行封装. 这里需要格外注意的是,企业微信中请求包的数据是Json字符串格式的,而不是xml格式.关于json序列 ...

  9. Java企业微信开发_02_通讯录同步

    一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步”  ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取 ...

随机推荐

  1. postman之设置关联

    接口关联(上一个接口的返回参数作为下一个接口的入参使用): 一:在第一个接口的test点击Response body:JSON value check和set an environment varia ...

  2. Java范型学习笔记

    对于范型的使用或者说印象只有集合,其他地方即使使用过也不知道,反正就是只停留在List<E> Map<K, V>,最近刚好闲来无事,就找找资料学习一下:下列为个人学习总结,欢迎 ...

  3. pytorch之 batch_train

    import torch import torch.utils.data as Data torch.manual_seed(1) # reproducible BATCH_SIZE = 5 # BA ...

  4. xPath和html基础扫盲

    xPath:一种HTML和XML的查询语言,他能在XML和HTML的树状结构中寻找节点 安装xPath: pip方法: pip install  lxml win+R:cmd 打开命令控制台:   此 ...

  5. Learning links

    技术文档.API 和代码示例 _ Microsoft Docs _NET 文档 _ Microsoft Docs TutorialsTeacher_C# 菜鸟教程_C# 圣殿骑士<博客园精华集& ...

  6. Python123——测验1: Python基本语法元素 (第1周)程序题2总结

    一.题目 二.解析 (1)官方解析 (2)个人解析 def m1(): """ 法1:暴力破解""" s1 = input('') s2 = ...

  7. 最短路问题 Dijkstra算法- 路径还原

    // 路径还原 // 求最短路,并输出最短路径 // 在单源最短路问题中我们很容易想到,既然有许多条最短路径,那将之都存储下来即可 // 但再想一下,我们是否要把所有的最短路径都求出来呢? // 实际 ...

  8. go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)

    目录 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin) zipkin使用demo 数据持久化 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin ...

  9. nginx location展示及文件共享

    nginx 目录展示及文件访问 效果: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5G9wfKK-1570116907804)(E:\Users\FangJunX ...

  10. JSOI部分题解

    JSOI部分题解 JSOI2018 战争 问题转化为给定你两个凸包\(\mathbb S,\mathbb T\),每次独立的询问将\(\mathbb T\)中的每个点移动一个向量,问\(\mathbb ...