`
jinghong
  • 浏览: 55495 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

网站重构(一)--废弃java

    博客分类:
  • 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作为跨语言调用的规范。
让每个技术用在最适合的地方,不要让语言成为瓶颈。
分享到:
评论

相关推荐

    基于Java的Crengine游戏引擎废弃与未来重构可能性探讨设计源码

    该项目为基于Java的Crengine游戏引擎的设计源码,包含56个文件,包括43个Java源文件、4个XML配置文件、2个Gradle脚本文件、1个Git忽略文件及其他几种文件类型。该游戏引擎目前处于废弃状态,自2023年12月11日起更新...

    重构_改善既有代码的设计[高清版].pdf

    根据提供的文件信息,我们可以推断出这是一份关于软件开发资源汇总的文档,但主要的关注点在于“重构——改善既有代码的设计”这一主题。以下将围绕这个核心知识点展开详细的介绍和解释。 ### 重构——改善既有代码...

    java API设计

    Java API设计是一个重要的主题,它关乎到代码的可读性、可维护性和可扩展性。在软件开发中,良好的API设计能够使其他开发者更轻松地理解和使用你的代码库,从而提高项目的整体质量。以下是对Java API设计的一些核心...

    Java SE复习

    然而,在 Java 9 之后,finalize 方法的使用已经被废弃。 4. **throw 与 throws 的区别**: - `throw`:用于抛出一个异常,通常是在方法体内。 - `throws`:用于声明一个方法可能抛出的异常类型,通常出现在方法...

    Java经典问题答案(带书签).pdf

    - 垃圾回收(GC)是Java的一项自动化内存管理功能,负责回收不再使用的对象所占用的内存。 - Java的GC算法包括标记-清除算法、复制算法、标记-整理算法等。 **==与equals的区别** - `==`用于比较引用是否指向同一个...

    新版Android开发教程.rar

    � Android 更像一款桌面环境为 Java 的 Linux 操作系统。有助于 Google 实现其 " 随时随地为每个人提供信 息 " 的企业战略。 HTC HTC HTC HTC Dream/G1 Dream/G1 Dream/G1 Dream/G1 具体配置 硬件 3.17 英寸 HVGA ...

    写Java程序的三十个基本规则

    - `finalize()` 方法主要用于回收资源,在 Java 9 中已被标记为废弃。 - 不推荐依赖 `finalize()` 方法进行资源清理,而应使用其他方式(如 `try-with-resources` 或显式关闭资源)。 #### 17. 避免过度使用同步 - ...

    Java代码编写的30条建议

    3. **避免使用过时的API**:及时更新到最新版本的Java,避免使用已废弃的类和方法。 4. **合理使用访问修饰符**:根据需求选择public、private、protected,确保封装性。 5. **异常处理**:不要忽视异常处理,避免...

    java 遗留问题

    在Java开发中,遗留问题的处理是一项重要的工作。以下是一些可能的Java遗留问题及解决策略: 1. **过时的技术**:检查项目是否还在使用已废弃的API或版本,及时升级到最新稳定版本,以获得安全性和性能的提升。 2....

    jdk8u-jdk-master

    5. Date和Time API的重构:Java 8引入了全新的java.time包,取代了过时的java.util.Date和java.util.Calendar,提供了更强大、更直观的时间日期处理能力。 二、OpenJDK 8源码结构解析 OpenJDK 8的源码仓库主要分为...

    urlrewritefilter-4.0.3.jar

    总之,`UrlRewriteFilter-4.0.3.jar`是一个强大的URL管理工具,它使得Java Web应用能够拥有更优雅、用户友好的URL,同时优化了SEO策略,提升了网站的整体质量。正确理解和利用URL重写技术,对于任何Web开发者来说都...

    BattleShip-Refactoring:软件设计和架构,重构项目(截止日期 01.12.2015)。 如果您要完全重构一个类,请将其标记为绿色,以免进一步考虑

    10. **遗留代码处理**:重构过程中,可能会遇到遗留代码,这些代码可能是过时的技术、未完成的功能或已废弃的接口。识别并处理这些遗留问题,对于提高整个项目的质量至关重要。 通过对"BattleShip-Refactoring"项目...

    Java开发规范

    ### Java开发规范详解 #### 1. 引言 ...通过上述规范的遵守,可以显著提高Java项目的可读性和维护性,减少潜在的错误和不必要的重构工作。此外,良好的编程习惯也有助于团队协作和代码质量的提升。

    基于复杂网络理论的Java开源系统演化分析.zip

    在Java开源系统中,可以追踪特定版本之间的大规模重构或功能添加,这些事件可能引起网络拓扑的显著变化。通过对这些突变点的分析,我们可以评估系统复杂性的增长和演化策略的有效性。 最后,复杂网络理论还可以用于...

    计算机科学与技术_基于Java的智慧环卫垃圾收运管理系统设计与实现.docx

    6. **IntelliJ IDEA**:IntelliJ IDEA是一款非常流行的Java集成开发环境(IDE),提供了一系列高级功能,如代码自动完成、调试工具、重构工具等,极大地提高了开发效率。 7. **Tomcat服务器**:Tomcat服务器是一款...

    Java版水果管理系统源码-Lighter:Lighter是一个轻量级的对象缓存服务中间件

    此项目已经废弃,请转移到 Go 重构的版本 kafo -- / 目前正在使用 Go 语言进行重构!!!不仅会加入持久化功能,还会改造为真正的分布式缓存中间件。。。 master 和 rebuild 分支是使用 Java 开发的单机版本,而 ...

    基于 springboot写的一个前后分离办公企业管理系统 ,通用服务端,用于学习.zip

    5. `旧的`:这是一个可能包含旧版本代码或废弃文件的目录,通常在升级或重构过程中保留,以备后续参考。 综合以上信息,这个项目提供了一个完整的办公企业管理系统,前端使用Web技术(可能包括React、Vue或Angular...

    jar包差异比较器

    一个jar文件本质上是一个ZIP压缩文件,包含了.class文件(编译后的Java字节码)、资源文件(如图片、配置文件)以及相关的元数据(如MANIFEST.MF文件)。在对比两个jar包时,我们需要关注的是这些元素在新旧版本中的...

Global site tag (gtag.js) - Google Analytics