Java的慢和稳
对Java的了解还有待进一步提升,也没有做太多实践工作。只是把脑袋当成电脑,把Java放在里边不停地转,观察它的线路。得到的总体印象加上书本参考,认为Java的应用场景是慢和稳。
学编程语言总会接触到c和汇编。从发展来看,最初的语言是用来配合计算机,根据计算机的硬件执行步骤编程出01。为了把01稍简化些并且配合已知的常用功能造出了汇编,达到了可以简单的阅读。随着使用量的增加,功能集合越来越多,“简单的阅读”满足不了需求,继续在它的基础上产生c类的语言。让计算机自己把c翻译成汇编,再硬件性翻译成01。这里还是语言和机器沟通,只不过多了几步软件处理,通过计算机自己把c处理成它可以识别的01。也就是,给计算机c还是01,对计算机本身来说没什么区别,c,通过计算机自身翻译,和01站在同一个对外承载切面上。
c比汇编好多了,随着需求的增大又生出面相对象的语言,让编程看上去更容易组织和被理解。发展到这里都是为了迎合需求,用更容易让人理解的方式开发语言。“编程语言”一直在做的事就是在人和计算机之间协调,工程量越来越大,怎样保证人的低脑力输出和计算机硬件的高效调用,便需要一个独特的平衡协调。
面相对象语言都有自己的发展方向。Java的存在也有它独特的思维体系,它更偏向于去妥协人的思考过程,也就是平衡偏向减少脑力输出,同时增加运算量,降低了速度。
Java是动态编译的语言。有很多语言都是“静态编译”,需要执行的01都被提前写好在一个文件里,等到运行的时候直接加载这个文件执行就可以了。像c就是这样,执行起来是一个早就拼好的01串。动态编译是用到什么再临时去拼凑,只有运行的时候才把程序拼出来并转换成01。如果某一个文件的所有功能一直没有用到,那么它就不会被翻译成01。对计算机来说,在执行到相应任务之前,它并没有办法获知具体需要做什么。
Java在运行的过程中自行回收不再使用的内存。编程一般讲究自己开的内存自己回收,这样可以对内存应用有一个直观的感应。随着工程量增大,回收内存也占用了大量的脑力,让语言自己去回收就可以让人轻松出来,有更多的脑力去投入到主题逻辑中。
想起来之前对get和set方法的提问,明明设置成可见属性就能很方便使用,为什么要设置成隐藏属性,并且用这两方法来操作。有人说为了封装,有人说方便以后再获取或者设置值的时候做一些前置或后置。想到内存上的话,一个是分配到栈,一个是分配到堆。这些思考使人更多去了解面向对象,了解对象和对象之间的相互协作。“把一件事交给另一个对象,你不需要知道它具体怎么完成的,只要知道怎么让它执行这件事就好。”。(如果直接用属性,你不但知道了怎么调用它,还知道了它是怎么完成的,这个对象不称职。)在java里,很容易感觉到这种相互配合。每一个对象不再是功能的抽象,聚合一个对象越来越偏向于从对象本身对它进行思考,埋合进自己的思维,让对象显得有思维。写的代码是一个对象,而不是一个功能集合。它并不是把相关、类似的功能聚集在一起的文件来方便功能的实现,它本身是一个对象,是一个物体,附有特殊的责任,在职责内的它能做,职责外的不能添给它。写软件不是功能和功能配合,是对象和对象配合。它区别于函数库。语言里边的继承使得它更适合融入人的思想。多态就像针对不同的环境做出不同的反应,本质上确是履行了同一种职责。接口就是你的存在在最开始就具有了一份通用功能,别人想用这份功能的话,都不需要知道你的名字就可以引用。软件是一个对象相互协作的时空。
为了实现这种特别抽象出来的时空,java做了很多事去处理底层,这会变慢。计算机发展硬件总在不断适应软件需求,现在还是慢的状况,以后却是未知。
Java的慢和稳的更多相关文章
- Hello——Java10新特性,请了解一下
2018年3月20日,Java 10 正式发布! 相关地址: 官方地址:http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...
- 2018.11.25 AMC-ICPC 亚洲区域赛(焦作站)吊银
11月23日 大清早,跟着wyb的脚步,早起跑过去听方伟的编译原理,然鹅一点都没听进去,在焦作胡辣汤群里疯狂灌水... 听说焦作那边冷得不行,前一天看天气预报说那边已经是2℃了,都快零下了,然鹅学校里 ...
- OOP第一章总结
经过了三周的OO,尽管过程不太轻松,但是有所得还是值得欣慰的事! (1)程序结构 第一次作业: UML类图如下,第一次作业在结构上并没有太多面向对象的思想,只是简单的分类,一个运行类,两个对象类,预处 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 2019年2月编程语言最新排行:java稳居第一(java优势在哪里)
近日TIOBE公布了2月编程语言排名,在意料之中java稳居第一,C和C++分别位居第二第三名. 下图是2 月编程语言排行榜 TOP20 榜单以及前 10 名编程语言长期走势图: ...
- Java程序员在用的大数据工具,MongoDB稳居第一!
据日前的一则大数据工具使用情况调查,我们知道了Java程序猿最喜欢用的大数据工具. 问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具 ...
- Java并发编程73道面试题及答案 —— 面试稳了
今天主要整理一下 Java 并发编程在面试中的常见问题,希望对需要的读者有用. 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任 ...
- 【Java面试】面试遇到宽泛的问题,这么回答就稳了,谈谈你对Redis的理解
"谈谈你对Redis的理解"! 面试的时候遇到这类比较宽泛的问题,是不是很抓狂? 是不是不知道从何开始说起? 没关系,今天我用3分钟教你怎么回答. 大家好,我是Mic,一个工作了1 ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
随机推荐
- stm32串口接收发送数据处理
/************************************************************* Function Name : Uart1_Send_Byte* Desc ...
- 科学地增加postgresql最大连接数
PG配置文件路径 /etc/postgresql/9.3/main/postgresql.conf 首先如何查看最大连接数 This SQL will help you select max_conn ...
- vim打开退出命令
打开文件方法:cd /Users/liuchang/.jenkins/secrets && vim initialAdminPassword 退出方法:先按ESC,再输入冒号,在输入命 ...
- python_类与对象学习笔记
class Phone: #手机属性===>类属性 # color='black' # price=4500 # brand='oppo' # size='5.5' #参数化-魔法方法--初始化 ...
- ant 执行jmeter
构建-invoke ant -properties jmeter.home=/home/userapp/apps/apache-jmeter-5.0report.title=kyh_register_ ...
- maven的安装教程
一.准备工作 1.确定电脑上已经成功安装jdk7.0以上版本 2.win10操作系统 3.maven安装包 下载 ...
- 使用Vim-plug作为Vim 插件管理器
ref: https://www.cnblogs.com/jiftle/p/6918157.html - vundle是一款老款的插件管理工具- vim-plug相对较新,特点是支持异步加载,相比vu ...
- Flink 核心技术浅析(整理版)
1. Flink简介 Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink流执行引擎(streaming dataflow engine),提供支 ...
- python中opencv的安装
1.得到opencv的安装包: 2.把安装包中的cv.py, cv2.pd放到一个文件夹中,并把这个文件夹放到D:\Anaconda2\Lib\site-packages中: 3.添加新的变量,变量名 ...
- 移动开发常用head部分
<!--[viewport] 设置布局viewport的各种信息: width=device-width:布局viewport宽度等于设备宽度 initial-scale=1.0:默认缩放比为1 ...