课程咨询 :13486356750 QQ:1079585464

厦门达内java培训

  • 我们为什么用java做编程开发?

    发布:厦门Java培训      来源:码农网      时间:2016-03-21


  •     Java借鉴了动态语言和函数式语言的很多吸引人的特性,并保留了让Java和JVM晋级一流开发环境的先贤的努力成果。全世界有9百万Java攻城狮,因此,Java可以说是世界上最受欢迎的编程语言。厦门达内java培训专家就来一一列举java的优点。

    一、Java虚拟机(JVM)

        Java虚拟机(JVM) 已经诞生20年了。在此期间,它被部署在成千上万的系统上,历经了无数的漏洞修复和性能提升。JVM的优点有以下几个方面。首先,JVM完美支持日志和监控, 这使你可以很方便地监控小到单个线程的性能指标。JVM有世界上最优化的垃圾回收器之一,你可以根据优化吞吐量等因素灵活选择垃圾回收算法。最后,Java承诺的“write once, run anywhere”终于得已实现——你可以轻松地在任何架构上部署一个Java应用。JVM为你的代码提供了一个无比优秀的分发环境,怎能缺少JVM这一坚如磐石的工具。 

    二、库的支持

        如今,做Java开发,你可以使用一些非常好用且经过测试的Java库。Java库大部分都是成熟并用于实际生产开发的。Google, Amazon, LinkedIn, Twitter和很多Apache项目都倚重于Java。如果你用了Java,你可以参考这些库和公司,从而借鉴伟大的程序员先驱们的工作。

    三、类型安全

        Java的类型系统,虽然有时很繁琐,但是这使得你可以写出“好用”的代码。不再有运行调试,它使你可以依靠编译器而不是单元测试——单元测试只在你知道bug在哪里的时候才有用。类型安全也使你轻松的代码重构。Java同时支持范型——Go语言的最大诟病之一。再者,Guava这样的库I以最小的样板和开销,标准化了创建类型安全的API的方法。 Java编译器的改进也意味着你可以在享受类型安全的同时最小化范型所需的样板代码。

    四、并发性

        Java 有着对多线程和并行的一流支持。对于Java 1.7, 许并行的immutable数据结构令你轻松地在线程间共享数据。Akka库更进一步的提供了Erlang型的Actors来写并发和分布式的程序,此外,管理单个线程这一特性为Java应用提供了异步性能。

    java 7和java 8 的新核心语言概念:

    一、迭代

    首先我们一起来看看迭代。下面是Java 8中的 for循环: 


    List<String> names = new LinkedList<>();  // compiler determines type of LinkedList

    // ... add some names to the collection

    names.forEach(name -> System.out.println(name));


    或者是被大大简化的 for关键词? 


    for (String name : names)

    System.out.println(name);


    这2种循环结构都比你平时看到的for循环简洁的多。

    二、Lambda函数

    Lamda函数,语法记作->, 是Java语言的一项重大改革,并从函数式编程中引入了一些概念。 

    下面来看几个Java中Lambda函数的例子。


    // Lambda Runnable
    Runnable r2 = () -> System.out.println("Hello world two!");

    // Lambda Sorting
    Collections.sort(personList, (Person p1, Person p2) -> p1.getSurName().compareTo(p2.getSurName()))

    // Lambda Listener
    testButton.addActionListener(e -> System.out.println("Click Detected by Lambda Listener"));


    三、流

    Java 8引入了流(stream)的概念,这为Java提供了很多现代函数式语言的特性。流是一种对集合上的一系列转换延迟执行的机制。比如我们来数一下以’A’开头的名字。首先想到的方法肯定是像下面这样: 


    List<String> names = new LinkedList<>();
    // ... add some names to the collection
    long count = 0;
    for (String name : names)  {
    if (name.startsWith("A"))
    ++count;
    }


    如果用流,上述就可以简化为首先将集合转换成流,然后使用函数: 


    List<String> names = new LinkedList<>();
    // ... add some names to the collection
    long count = names.stream()
    .filter(name -> name.startsWith("A"))
    .count();

    Java同时支持用parallelStream()来进行流的并行处理。并行流允许流水线业务在独立的线程同时执行,这不仅改进了语法,同时提高了性能。在大多数情况下,你可以简单得用parallelStream()替换stream()实现并行。

    四、Try-With-Resources结构

    在Java 6之前,打开一个文件然后读取内容需要通过try/finally来完成:


    static String readFirstLineFromFileWithFinallyBlock(String path)
    throws IOException {
    BufferedReader br = new BufferedReader(new FileReader(path));
    try {
    return br.readLine();
    } finally {
    if (br != null) br.close();
    }
    }


    但是readLine和close都有可能抛出异常。在这种情况下,readLine抛出的异常被忽略,我们事实上并不知道readLine执行失败。

    Java 7引入了 Try-With-Resources结构来克服这种缺陷:


    static String readFirstLineFromFile(String path) throws IOException {
    try (BufferedReader br =
    new BufferedReader(new FileReader(path))) {
    return br.readLine();
    }
    }


    无论在何种失败情况下,BufferedReader都会自动关闭文件流。你可以通过用逗号分隔的方式,用一个try语句来打开多个资源。 

    五、多重catch

    以往Java只允许一个catch代码块对应一个异常,这造成如下的代码冗余:


    catch (IOException ex) {
    logger.log(ex);
    throw ex;
    catch (SQLException ex) {
    logger.log(ex);
    throw ex;
    }


    从Java 7开始,你可以在一个代码块内捕捉多个异常,从而减少了代码冗余:


    catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
    }


    六、数值字面常量(Numeric Literals)

    数值字面常量可以添加下划线是Java语言的新特性。这允许你使用_作为大数字的视觉分隔符。下面的例子不言自明:


    int thousand = 1_000;
    int million  = 1_000_000;


    java第三方工具和库

    一、Maven

        Maven是一个Java构建系统,相比于配置,它更重视规范。Maven定义了应用程序的结构,并提供了许多内置函数,比如运行测试,打包应用,部署你的库。使用Maven会显著降低管理Java项目的认知开销。 Maven Central是Java世界中的PyPI,为已发布的Java库提供一站式服务。

    二、核心函数

        谷歌的Guava library提供了谷歌Java开发中所使用的核心函数。这包括应用于集合,缓存,基础数据类型,并发,字符串处理工作,I/O等的常见函数。Guava为如何设计好的的Java API提供了绝佳的案例分析,提供最有效的从Java中推荐的最佳实践的具体例子一个很好的案例, Effective Java中推荐的最佳实践大部分都在Guava中得以体现。Guava被用于谷歌产品开发,进行了超过286,000个单元测试,可谓经受过实战测试的考验。

    三、日期/时间函数

        Joda-Time 已 经成为Java实际上的标准日期/时间函数库。事实上,Java 8几乎一字不差地采用了Joda-Time规范。自此,我们建议使用java.time中的日期/时间函数代替Joda-Time。但是,如果你需要使用 Java 8之前的版本,Joda-Time提供了无与伦比的API。

    四、分布式系统

        Akka 提供类似Erlang型的Actor模型的抽象层来编写分布式系统。Akka可以从容应对许多种不同的故障,为编写可靠的分布式系统提供了更高层次的抽象。

    五、Web应用程序

        需要用Java写一个功能完善的Web应用程序?莫怕,有Play Framework罩着你。Play基于Akka的非阻塞I/O,提供了编写Web应用程序的可扩展的异步框架。如果想使用不那么前沿但是被广泛应用于产品的框架,请尝试Jetty。

    六、单元测试

        JUnit 仍为编写单元测试的标准。最近几年,JUnit的匹配器有所扩展,允许你对集合作assertions。例如,您可以轻松地断言一个链表是否包含某个特殊值。

    七、模拟框架(Mocking Framework)

        Mockito是Java的标准模拟库。它提供了所有你能想到的且对编写测试非常重要的模拟库的功能。




    原文链接:http://www.codeceo.com/article/pythoner-tell-why-use-java.html

上一篇:达内:Java语言学习的六大关键

下一篇:达内:如何在Java接口中定义方法

最新开班日期  |  更多

Java--大数据周末班

Java--大数据周末班

开班日期:每周一

Java--大数据全日制班

Java--大数据全日制班

开班日期:每周一

Java--零基础周末班

Java--零基础周末班

开班日期:每周一

Java--零基础全日制班

Java--零基础全日制班

开班日期:每周一

  • 地址:厦门软件园二期望海路59号之一401达内科技
  • 课程培训电话:13486356750 QQ:1079585464     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56