您的位置:首页 > 编程语言 > Java开发

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

2015-08-30 20:43 417 查看
     本文主要介绍了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\repository</localRepository> 
或  
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配置远程仓库:

<project>
.....
<repositories>
<repository>
<id>my-repo</id>
<name>my repository</name>
<url>http://localhost:8080/artifactory/my-repo/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>my-repo</id>
<name>my repository</name>
<url>http://localhost:8080/artifactory/my-repo/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<name>oss.sonatype.org</name>
<id>oss.sonatype.org</id>
<url>http://oss.sonatype.org/content/groups/public</url>
</pluginRepository>
</pluginRepositories>
...
</project>

                      也可以使用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一致):

<project>    pom.xml
...
<distributionManagement>
<repository>
<id>my-repo</id>
<name>Release Repository</name>
<url>http://localhost:8081/artifactory/my-repo</url>
</repository>

...
</project>

<pre class="java" name="code"><settings>    setting.xml
...
<servers>
<server>
<id>my-repo</id>
<username>admin</username>
<password>password</password>
</server>
...
</settings>




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}        ---    <project><version>1.0</version></project>                     setting.xml文件中属性:${setting.offline}     ---    <settings><offline>false</offiline></setting>                    
Java System Properties: ${java.home}        ---    java.lang.System.getProperties()中的属性,java.home                     自定义:${installDir}                                     ---   <properties><installDir>c:/apps/cargo-installs</installDir></properties>

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

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

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
<!– The Basics –>
<groupId>…</groupId>
<artifactId>…</artifactId>
<version>…</version>
<packaging>…</packaging>
<dependencies>…</dependencies>
<parent>…</parent>
<dependencyManagement>…</dependencyManagement>
<modules>…</modules>
<properties>…</properties>
<!– Build Settings –>
<build>…</build>
<reporting>…</reporting>
<!– More Project Information –>
<name>…</name>
<description>…</description>
<url>…</url>
<inceptionYear>…</inceptionYear>
<licenses>…</licenses>
<organization>…</organization>
<developers>…</developers>
<contributors>…</contributors>
<!– Environment Settings –>
<issueManagement>…</issueManagement>
<ciManagement>…</ciManagement>
<mailingLists>…</mailingLists>
<scm>…</scm>
<prerequisites>…</prerequisites>
<repositories>…</repositories>
<pluginRepositories>…</pluginRepositories>
<distributionManagement>…</distributionManagement>
<profiles>…</profiles>
</project>


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




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: