JAVA是否最适合企业应用开发?
·
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是否最适合企业应用开发?的更多相关文章
- Java企业微信开发_03_通讯录同步
一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步” ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取 ...
- Java企业微信开发_07_素材管理之上传本地临时素材文件
一.本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要 ...
- Java企业微信开发_05_消息推送之发送消息(主动)
一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接 ...
- Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)
注: 源码已上传github: https://github.com/shirayner/WeiXin_QiYe_Demo 一.本节要点 1.1 授权回调域(可信域名) 在开始使用网页授权之前,需要先 ...
- Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器
一.本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要 ...
- Java企业微信开发_05_消息推送之被动回复消息
一.本节要点 1.消息的加解密 微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip ,此包中封装好了AES加解密方法,直接调用方法即可. 其中,解 ...
- Java企业微信开发_04_消息推送之发送消息(主动)
源码请见: Java企业微信开发_00_源码及资源汇总贴 一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息 ...
- Java企业微信开发_03_自定义菜单
一.本节要点 1.菜单相关实体类的封装 参考官方文档中的请求包的内容,对菜单相关实体类进行封装. 这里需要格外注意的是,企业微信中请求包的数据是Json字符串格式的,而不是xml格式.关于json序列 ...
- Java企业微信开发_02_通讯录同步
一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步” ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取 ...
随机推荐
- landsat8波段叠加(layer stacking)
许久没更.最近一直在看IDL,忽略了gdal的学习. 今天做了landsat8的辐射定标,需要通过reflectance gains/bias来进行波段运算.由于landsat8 oli未提供一个完整 ...
- 01_TypeScript介绍安装
1.介绍 TypeScript 是由微软开发得一款开源得编程语言:是JavaScript得超级,遵循ES6,ES5规范:更适合开发大型企业项目. 2.安装 npm install -g typesri ...
- css浮动(float)详解
一.什么是浮动? 浮动,顾名思义,就是漂浮的意思.指的是一个元素脱离文档流,悬浮在父元素之上的现象. 二.如何产生浮动? 给元素本身添加float属性 float值: left 元素向左浮动. rig ...
- 终于成功部署 Kubernetes HPA 基于 QPS 进行自动伸缩
昨天晚上通过压测验证了 HPA 部署成功了. 所使用的 HPA 配置文件如下: apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscale ...
- KNN和K-Means算法
一.KNN算法 1.KNN算法介绍 https://wizardforcel.gitbooks.io/dm-algo-top10/content/knn.html 2.KNN算法例子 import n ...
- Eclipse 无法引用到Maven 解决方法
问题描述:打开Eclipse进入java EE视图下,发现原有的Maven Dependencies目录不存在,显示的是org.maven.ide.eclipse.MAVEN2_CLASSPATH_C ...
- [HTML5] input标签 disable属性
<span>服务器名称:<input type="text" name="server_name" placeholder="服务器 ...
- 解决pycharm打开html页面一直刷新
顺序——> File ——>Project:项目名——>project Structure 右侧的 + Add ContentRoot下面只保留本项目路径,其他全删了 方法2(推荐) ...
- javascript中onclick(this)用法介绍
this指触发事件的对象 代码如下: <input id="myinput" type="text" value="javascript中onc ...
- HTML连载68-形变中心点、形变中心轴
一. 形变中心点介绍 <style> ul li { width: 100px; height: 100px; list-style: none; float:left; margin:0 ...