Java是什么
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
为什么选择Java
java有多火?
1.97%的企业桌面运行Java
2.美国有98%的桌面(或计算机)运行Java
3.全球有900万Java开发人员
4.开发人员的头号选择
5.排名第一的部署平台
6.有30亿部移动电话运行Java
7.100%的蓝光盘播放器附带了Java
8.有50亿张Java卡在使用
9.1.25亿台TV设备运行Java
10.前5个原始设备制造商均提供了Java ME
上图数据来自于TIOBE编程语言社区2018年10月最新的排行榜。TIOBE 编程语言社区排行榜是编程
语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经验的程序员、 课程和第三方厂商的数量。
排名使用著名的搜索引擎(诸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算。同学
们可以随便搜搜近几年的编程类语言排行榜,Java基本都在前列,因此绝对都是当之无愧的老大哥。
Java的特性
- 简单性
Java语法是C++语法的一个“纯净版本”。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重
载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。 - 面向对象
什么是面向对象? 这里我们用木匠打一个比方,一个“面向对象”的木匠始终关注的是所制作的椅子,第二位才是所
使用的工具;而一个“非面向对象的”木匠首先考虑的是所使用的工具。
在Java的世界里,一切皆对象。
Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口
概念。而且与C++相比,Java提供了更丰富的运行时自省功能。 - 分布式(微服务)
比特科技
Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的
对象,其便捷程度就好像访问本地文件一样。 - 健壮性
Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花费几个小时来
检查由于指针bug而引起内存冲突的人来说,一定很喜欢Java的这一特性)。不仅如此,Java编译器能够检测许多
在其他语言中仅在运行时才能够检测出来的问题。 - 安全性
Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防
篡改的系统
从一开始,Java就设计成能够防范常见的各种攻击:
运行时堆栈溢出。蠕虫和病毒常用的攻击手段。
破坏自己进程空间之外的内存。
未经授权读写文件 - 体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代
码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精
心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。 - 可移植性
与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例
如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定
的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。 - 解释型
Java解释器可以在任何移植了解释器的机器上执行Java字节码。由于链接是一个增量式且轻量级的过程。所以开发
过程也变得更加快捷,更加具有探索性。 - 高性能
尽管对解释后的字节码性能已经比较满意,但在有些场合下可能需要更加高效的性能。字节码可以(在运行时刻)
动态的翻译成对应运行这个应用的特定cpu的机器码。 - 多线程
Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发
程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。 - 动态性
Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客
户端没有任何影响。在Java中找出运行时类型信息十分简单(反射的特性,后续会学到)
Java的发展简史
发展简史比较长,大家有感兴趣的可以自行上网查,在这里,给大家介绍一个人,它就是Java之父:詹姆斯·高斯林
詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为"Java之父"。
1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位。
Java和c++的对比
1.Java:
除了上述几个优点以外,其一,语法比较简单,学过计算机编程的开发者都能快速上手。
其二,在若干了领域都有很强的竞争力,比如服务端编程,高性能网络程序,企业软件事务处理,分布式计算,
Android 移动终端应用开发等等。
最重要的一点是符合工程学的需求,我们知道现代软件都是协同开发,那么代码可维护性,编译时检查,较为高效
的运行效率,跨平台能力,丰富的 IDE,测试,项目管理工具配合。都使得 Java 成为企业软件公司的首选,也得到
很多互联网公司的青睐。
没有短板,容易从市场上找到 Java 软件工程师,软件公司选择 Java 作为主要开发语言,再在特定的领域使用其他
语言协作编程,这样的组合选择,肯定是不会有大的问题。 所以综合而言,Java 语言全能方面是最好的。
2.C++:
优点一:数据类型丰富、齐全。标准C提供了整数、实数、字符、字符串等基本数据类型,还提供数组、指针、结构体等构造数据类型。C++还增加了类这一特殊数据类型的定义机制。这也就导致C++的功能更加强大,使用起来更加得心应手。
优点二:具有直接的硬件处理能力;比如说允许直接访问内存地址,进行各种位运算,能通过中断调用直接控制各种硬件设备等等。这是其他很多编程语言无法做到的。
优点三:编译系统生成的目标代码质量高,程序执行效率高。效率对软件来讲是极有为重要,使用起来很慢的软件相信没有人喜欢。
总结:
java的语法结构相对C++来说比较简单,去掉了C++中容易出错也比较难掌握的的指针和多继承,用接口代替了多继承的机制,减小了类之间关系的复杂度。所以个人觉得java语法比较容易掌握,但是java难在API类库相当庞大,要真正深入学习并精通并不容易。缺点是java是解释型的语言,执行效率相对于C++来说比较低。java还有一个最大优点是它使通过java虚拟机执行的,并不直接调用操作系统API,所以具有系统平台的无关性,可以直接移植到装有java虚拟机的其他系统上执行。
C++应用广泛,由于java是编译型的语言,所以执行效率比较高。但是C++没有垃圾自动回收机制,所以如果程序设计不合理会导致内存泄漏问题的发生。
因此,没有最好的语言,只有在某个领域中才有最适合这个领域的语言,其次,我们也应该注意提高自己的能力,不管学C++还是Java,只要我们的能力足够强,我们就可以在自己的领域里绽放光彩