废弃java

C是王道
C++是正道
erlang是大道
python是歪门邪道
java是无间道

公司网站在用java做了3个版本后,终于选择要基本废弃java了。
原因有以下几个方面

1、单一堆的内存管理,stop the world的full gc
公司在很多服务层上需要高性能和及时的运算,并且要加载大量的数据到内存中,这些服务都会因full gc带来错误。
2、java打包部署的过程太过痛苦,现在生产环境使用hadson(原来用CC)做CI,每次代码提交,打包上生产的过程都很麻烦,再加上maven/ivy和ant这类的东西,几乎得有一个专职的配置管理人员。
3、java程序员是很多,但高水平的就太难找了,熟悉多线程、NIO等特性的更是难寻,对GC,分代管理,回收算法熟悉的更少。
这点上java很适合做外包型的企业应用。找两个架构师,再找一群码工就完成工作。
4、java程序员之间的沟通成本很高,这点在团队规模大了后尤其明显。比之python,ruby,c#都高,而且如果和用其他语言构建的系统的团队沟通,似乎就更难了。
5、java语言本身的发展让人很不满意,1.7也就C#2.0->3.0之间的水平。
6、oracle的做法让人心寒,James Gosling,Doug Lea都离开了,你还留着吗?

当然还得部分保留java,否则就不是基本放弃了。
1、neo4j:SNS的图数据库现在就它能满足要求,只能尽量精细的控制full gc的发生了
2、hadoop/hbase:hadoop/hbase现在没有更好的替代方案了,hadoop的full gc到不是什么大问题,hbase就严重的,好在还有MSLAB来缓解一下。

废掉java后用什么?下面的部分来逐个分析,大体上会是C++/python/erlang再加部分java,用thrift作为跨语言调用的规范。
让每个技术用在最适合的地方,不要让语言成为瓶颈。

时间: 2024-10-23 07:28:06

废弃java的相关文章

Java垃圾回收原理(2)

Java虚拟机采用一种自适应的垃圾回收技术.依据的思想:对任何"活"的对象,一定能最终追溯到其存活在堆栈或静态存储区之中的引用.这个引用链条可能会穿过数个对象层次.由此,如果从堆栈和静态存储区开始,遍历所有的引用,就能找到所有活的对象.对于发现的每个引用,必须追踪它所引用的对象,然后是此对象所包含的所有的引用,如此反复进行,直到"根源于堆栈和静态存储区的引用"所形成的网络全部被访问为止.至于如何处理找到存活的对象,取决于不同的Java虚拟机的实现.有一种名为停止-复

《深入理解Java虚拟机》笔记04 -- 并发锁

Java虚拟机在操作系统层面会先尽一切可能在虚拟机层面上解决竞争关系,尽可能避免真实的竞争发生.同时,在竞争不激烈的场合,也会试图消除不必要的竞争.实现这些手段的方法包括:偏向锁.轻量级锁.自旋锁.锁消除.锁膨胀等 1. 偏向锁 偏向锁是JDK1.6提出的一种锁优化方式.其核心思想是:如果程序没有竞争,则取消之前已经取得锁的线程同步操作.也就是说,若某一锁被线程获取后,便进入偏向模式,当线程再次请求这个锁时,无需再进行相关的同步操作,从而节省了操作时间.如果在此之间有其他线程进行了锁请求,则锁退

Java中如何优雅正确的终止线程

Java中终止线程的方式主要有三种: 1.使用stop()方法,已被弃用.原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的"残疾"数据,不符合完整性,所以被废弃.So, forget it! 2.使用volatile标志位 看一个简单的例子: 首先,实现一个Runnable接口,在其中定义volatile标志位,在run()方法中使用标志位控制程序运行 public class MyRunnable i

Java 内存区域和GC机制

目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢.这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制.概括地说,该机制对 JVM(Java Virtual M

java 二叉树的遍历 为什么只给出前序以及后序遍历,不能生成唯一的二叉树

最近在学习java的数据结构与算法知识,看到数据结构 树的遍历的方式.在理解过程中.查看到一篇文章,视野非常有深度,在信息论的角度看待这个问题.在此贴出该文章的链接以及内容. [文章出处]http://www.binarythink.net/2012/12/binary-tree-info-theory/ 我们在学习二叉树的遍历时,都会不可避免的学到二叉树的三种遍历方式,分别是遵循(根-左-右)的前序遍历.遵循(左-根-右)的中序遍历以及遵循(左-右-根)的后序遍历.并且每一个二叉树都可以用这三

Java面试15|网络

1.查看网络的统计信息: netstat -s 结果中显示统计信息,保护收发包,建立连接的数量 netstat -at 列出所有TCP端口 netstat -au 列出所有的UDP端口 netstat -aut 目前正在运行的TCP/UDP服务 netstat常用的参数如下: -s或–statistice 显示网络工作信息统计表. -t或–tcp 显示TCP传输协议的连线状况. -u或–udp 显示UDP传输协议的连线状况. -a或–all 显示所有连接中的Socket. -n或–numeric

Java集合类详解(转)

Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).JavaSDK不提供直接继承自Collection的类,javaSDK提供的类都是继承自Collection的"子接口"如List和Set. 所

Java内存区域划分和GC机制

Java 内存区域和GC机制 目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢.这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制.概括地说,该机制对 JVM

《深入理解Java虚拟机:JVM高级属性与最佳实践》读书笔记(更新中)

第一章:走进Java 概述 Java技术体系 Java发展史 Java虚拟机发展史 1996年 JDK1.0,出现Sun Classic VM HotSpot VM, 它是 Sun JDK 和 OpenJDK 中所带的虚拟机,最初并不是Sun开发 Sun Mobile- Embedded VM/ Meta- Circular VM BEA JRockit/ IBM J9 VM JRockit曾号称世界上最快的java虚拟机,BEA公司发布.J9属于IBM主要扶持的虚拟机 Azul VM/ BEA