JAVA练级之路(二)--- JAVA入门

     本文主要介绍了C++/JAVA比较、JAVA相关工具配置、JAVA语言基础。主要目录如下:

             一、C++&JAVA对比。
             二、JAVA工具配置: IDEA使用、pom.xml说明、mvn使用。
             三、JAVA语言特性:

 一、C++&JAVA对比。

     文章开始之前,先对比一下C++和JAVA语言吧。(下面的介绍和趋势都是个人的感觉,并无真实数据支撑)

     一直在做C++,整体的感觉C/C++现在在招聘市场还是有一些没落的,不过毕竟是强类型的语言,而且也一直在更新。C/C++的优点也是很明显的,性能高、可以操作硬件、自由。但是缺点也是明显的:自由、过度太复杂,导致入门门槛高。我感觉C/C++整体的还是只是适合底层/后台的服务。整体的随着语言和社会的的发展,新出现的问题肯定更加倾向于使用简单的解决方案来解决,所以创业公司也较多倾向于使用JAVA。所以语言肯定是更加简单易用,在后台都逐渐脚本化的时代,连GO都可以和JAVA抢饭碗,所以C++在新场景的应用肯定会越来越少的。先对比一下互联网/软件企业的C/C++和JAVA主要应用的项目。

      C/C++主导的项目主要有:

          1.    系统、硬件项目(底层的项目)
          2.    搜索(这都是百度的功劳---百度搜索)
          3.    广告(这也是百度和腾讯的功劳---凤巢、阿里妈妈、广点通)
          4.    Object C(也是如日中天的客户端、可是有被swift替换的趋势)。
          5.    通信项目后台(腾讯的功劳、性能的考虑---QQ、旺旺、微信)
          6.    各种系统软件(银行后台---IBM服务器、Vmware虚拟化、云计算底层)
    使用JAVA能做很多的项目:
          1.    JAVA服务端/业务(简单易用,工具强大、迭代快,但是也有被脚本化的趋势)
          2.    Android项目(当前如日中天的客户端开发)
          3.    Web项目(Java Script)
          4.    电商项目(各种ERP,后台业务逻辑)
          5.   数据挖掘机器学习项目(Spark)
          6.   大数据项目(Apache社区的功劳---Hadoop、Storm、Hive、HBase)。
     其实说C++没落,有些绝对和大话了。整体的项目和语言关系如上,整体的语言发展趋势谁知道呢?就拿程序员这个职业来说,可以确定的是这个行业知识迭代更新很快,一定要不停的学习和更新自己。再多说一句,程序员这个职业,不过还能火多久呢?5年、10年、50年,万一到时候互联网泡沫破灭了呢? 不过就趋势来说,软件和不同行业的结合和影响的能力很强。即使未来互联网不是领先的生产力了,无论是未来人工智能,机器人,还是的数据时代,码农都是少不了的哈。
    其实对于小码农来说,随便一个坑位就足以养活我了哈,先把搜索和C++学习的更加深入,再多学习一些,毕竟技多不压身么。


二、JAVA工具配置:JDK安装、mvn简介、pom.xml简介、IDEA使用简介。

1. JDK安装和配置
2.  maven简介
           1) 什么是maven
           2)maven仓库配置
                a. 本地仓库 <localRepository>D:\java\repositorylocalRepository>  或   mvn clean install -Dmaven.repo.local=/home/juven/myrepo/
               
 b. 远程仓库: maven项目默认使用超级POM: \org\apache\maven\project\pom-4.0.0.xml ,它是所有maven pom的父pom.xml
                    可以使用artifactory配置远程仓库:


  .....

    
      my-repo
      my repository
      http://localhost:8080/artifactory/my-repo/
      
        true
      
      
        true
      
    
  

  
    
      my-repo
      my repository
      http://localhost:8080/artifactory/my-repo/
      
        true
      
      
        true
      
    
    
      oss.sonatype.org
      oss.sonatype.org
      http://oss.sonatype.org/content/groups/public
    
  
  ...

                      也可以使用setting.xml作为一个全局配置。但是不是将pom.xml的repositories和pluginRepositories复制到settings.xml中就行了,可以使用profile如下,定义一个id为dev的profile,将所有的repositories和pluginRepostories放到这个profile中,然后使用activeProfiles元素激活该Profile。这样就不用再为每个pom重复配置仓库。
               c. 上传构件到远程仓库:
                      需要配置pom中的distributionManagement来制定maven分发构件的位置,也可以使用setting.xm来配置如下(注意server下的id值,必须与pom.xml中的repository一致):

    pom.xml
   ...    
       
         
       my-repo    
       Release Repository    
       http://localhost:8081/artifactory/my-repo    
         
    
   ...    
     


    setting.xml
   ...    
       
         
       my-repo    
       admin    
       password    
            
   ...    
  

 
  

3.  pom.xm简介

           1). 什么是POM                    Project Object Model, 项目对象模型。pom.xm文件类是ant的build.xml文件,不过它更加强大,可以管理源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系。           2) POM.xml详解            a. maven协作相关属性:                     groupId: 组织标识  如org.codehaus.test,那么在M2_REPO目录下,将是: org/codehaus/test目录                     artifactId: 项目名称  如myproject,那么将是  org/codehaus/test/myproject                     version: 版本号,那么将是 orj/codehaus/test/myproject/1.0                     packing: 打包格式,可以为pom, jar , maven-plugin, ejb, war, ear, rar, par.

            b. POM之间的关系                     依赖关系: dependency list                     继承关系:parent, 可以继承其他的依赖: developers and contributors、plugin lists、reports lists、plugin executions with watching ids、plugin configuration。                                       在这种机制下,maven还提供了一个类是java.lang.Object的顶级pom.xml文件                     聚合关系:modules,用于将多个maven目录聚合为一个大项目

             c. 属性                     操作系统环境变量: ${env.PATH}                     pom文件中的属性: ${project.version}        ---    1.0                     setting.xml文件中属性:${setting.offline}     ---    false                     Java System Properties: ${java.home}        ---    java.lang.System.getProperties()中的属性,java.home                     自定义:${installDir}                                     ---   c:/apps/cargo-installs

              d. 构建设置:                     build标签:Resources和Plugins,Resources用来包含某些资源,Plugins用于设置构建插件                     profiles/profile: 子编译集

            一个完整的pom.xml,放置在项目的根目录下:


  4.0.0
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  


4. Intelligent IDEA使用


参考文献:

1. C++精英化趋势与两个关键缺陷:http://www.cnblogs.com/daoshi/archive/2011/12/13/2286810.html
2. maven详解:http://blog.csdn.net/adeyi/article/details/17259479
3. mac配置maven: http://blog.csdn.net/anialy/article/details/22217937
4. maven配置本地仓库和远程仓库: http://blog.csdn.net/dongnan591172113/article/details/7685164
5. maven的环境搭建与idea配置: http://blog.csdn.net/xxb2008/article/details/8772634






你可能感兴趣的:(JAVA学习笔记)