JAVA练级之路(二)--- JAVA入门
2015-08-30 20:43
417 查看
本文主要介绍了C++/JAVA比较、JAVA相关工具配置、JAVA语言基础。主要目录如下:
一、C++&JAVA对比。
二、JAVA工具配置: IDEA使用、pom.xml说明、mvn使用。
三、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配置远程仓库:
也可以使用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一致):
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,放置在项目的根目录下:
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
一、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
相关文章推荐
- Java中垃圾回收和静态类型
- Java垃圾回收机制与引用类型
- java 数据类型转换的陷阱
- java实现快速排序两种方法
- 给初学者之一:浅谈java及应用
- java
- 迈进Java:HelloWorld
- Java线程:概念与原理
- 新的班级,新的生活
- 新的班级,新的生活
- java并发编程第六章(3)使用阻塞式线程安全列表
- 【Java笔记】——抽象类和接口
- [笔记][Java7并发编程实战手册]4.4 在执行器中执行任务并返回结果Callable、Future
- java并发实战第六章(2)非阻塞式线程安全列表与一般List集合多线程情况下的比较
- 六种常见排序算法Java实现
- Spring笔记(第一弹:简单模拟Spring IOC)
- Java中泛型数组的实现
- SpringMVC Helloword
- java web技术搜索知多少(更新中)
- JavaEE程序编码规范