java需要先安装jdk_谢谢知乎。Java初学者首先下载 JDK 开发环境,然后再下 eclipse 对吗?那 tomcat是什么?还需要安装吗?...

程序猎人Till All are One!

何马、FAN 等人赞同

这个问题,作为有些Java经验的人,都会觉得太初级。而且,我认为可能很多真正的高手不屑于跑来回答这种问题。

本来我也不打算回答的,但最近刚好凭兴趣在学Node.JS,顺便学习加强一下Vim。发现什么Coffee Script、什么Jade、什么Express之类的还真是让人一头雾水。深刻地认识到很多基础的东西,如果没有个人来串一下,对于初学者来说还真是麻烦。

所以,我觉得还是来回答一下比较好。(是不是太罗嗦了?)

===== 正文分割线 =====

JDK是Java Development Kit,也就是说Java开发所需的工具包。有了这个东西,一切Java开发理论上都不是问题了。当然,根据你下载的版本不同,可能擅长的领域不同。通常大家都是用JDK来开发JavaSE应用的。

具体做法上,JDK里包含了用来编译源代码的javac命令,和用来执行字节码的java命令。

只要设好了所用操作系统的PATH和CLASSPATH两个环境变量,对你所写的文本格式的Java源代码进行操作,原则上就不会出现代码编写问题以外的错误。

但因为javac和java命令都是命令行命令,执行以及结果查看都有些麻烦。更麻烦的是代码的动态调试(也就是一边跑一边看每一步都做了什么)。

Eclipse是集成开发环境,就是解决上面说的命令执行和操作麻烦的问题的。使用这个工具,如果你不做什么特别的特殊的事情的话,你可以不用操心javac和java命令怎么用,参数是什么,各种环境变量如何配置等。

只需要按照教程学会工具的使用,就可以很容易地书写你的代码,然后进行编译、执行以及调试。

而且,代码书写时会有很多提示,不用去记各个Class那些庞杂的方法名等。

也正是因为方便,它会在一定程度上影响你对Java相关命令的学习以及对常用Class的掌握。毕竟重复是加强记忆的最佳途径。什么都提示了,都自动了,就很难记住了。

这就是为什么有人反对你一开始使用这工具。

至于tomcat,它是使用Java进行Web开发的应用服务器(Application Server)软件。

之所以它会跟Java有紧密的联系是因为Java在经历了诞生后的进化之后,渐渐地被大众接受为优良的Web服务器端编程语言,也就是说Java最能发挥其优势的地方是用来进行Web开发。

从你的问题描述,我冒昧地认为你可能不是太了解什么是Web开发。所以简单做一下解释。

Web开发,说白了就是网站构建的软件部分。我们每天上网,看到各种网页,这些网页大多数都是由服务器端的程序根据用户提出的请求生成出来。这些程序就是服务器端运行的程序。

而服务器与浏览器的沟通是通过特定的格式进行的,这个格式被称作HTTP协议,HTTP协议有很多内容需要处理,如果所有这些都由开发者来做,未免负担过重。所以,很多年以前就有人开发出了专门的应用程序服务器软件,专门负责处理HTTP协议中的细节部分,而把真正需要的处理发送给专门的程序,也就是Web开发的程序。

以Java为例——

所有的Java程序启动入口都是public static void main(String[] args)函数。tomcat里面就有这么一个函数,运行这个函数后,tomcat里面会进行各种处理——打开网络端口进行监听、加载HTTP解析模块……我们称作服务器启动了。(实际是跟Apache协作进行的,这里就不详述了。)

当从网络上有请求到达我们的tomcat服务器时,它会根据请求的地址来调用你写的java程序模块。

比如,让我们先假设知乎的后台是Java实现的。

当你敲入

http://www.zhihu.com/

的时候,tomcat会得到一个希望访问/(根目录资源)的请求。

然后它去配置文件里查根目录对应的模块是什么。

假设查到的模块是root这个类

那么它会去调用root.doGet()方法。

而你写一个Servlet的时候,必须实现doGet()方法,此时你的方法被调用,那么你写的代码就运行了。

大概就是这么个状况。

至于学习方法。因人而异。

如果你希望直接学习如何用Java来开发Web应用。建议在学习Java语言之前先简单学习一下网络基础知识。

至少理解以下几个基础概念(到维基百科上查查,读懂即可):

服务器

客户端

协议

端口

URL

TCP/IP

网络分层结构(了解概念即可,暂时不需要记住各层是咋回事儿)

浏览器

HTTP(需要理解GET/POST的意义、差别)

HTML

Session(会话)

然后再开始Java进行Web开发的学习。

最后,祝你学习愉快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaEE重新审视设计模式:装饰器

去年的这个时候,我写了一系列有关JavaEE实现设计模式的博客文章。 大约一年后,我意识到我错过了我最喜欢的图案装饰器。 装饰器模式基本上是通过装饰其他对象来扩展对象功能的方法,这些对象可以包装目标对象并为其添加自身的行为。 如果您从…

课时105.边框属性下(掌握)

2.3连写(分别设置四条边的边框) border-width:上 右 下 左; border-style:上 右 下 左; border-color:上 右 下 左; 注意点: 1.这三个属性的取值是按顺时针来赋值的 也就是按照上右下左来赋值,而不是按照日常生活…

怎么用pycharm更新python_利用PyCharm操作Github(仓库新建、更新,代码回滚)

Github是目前世界上最流行的代码存储和分享平台,而PyCharm是Python圈中最流行的IDE,它很好地支持了Git操作。本文将会介绍如何利用PyCharm来连接Github,同时演示Github上的仓库新建、更新,以及代码回滚。在这之前,需要…

新mac 下第一次 安装 mongodb 步骤

新入手mac,安装mongo步骤记录:不建议使用网上的brew安装方法,因为试了半天没有成功,应该是新版本限制比较多! 从mongodb官网下载mac版本mongo: 1.访问MongoDB官方下载地址 http://www.mongodb.org/download…

201621123065《JAVA程序设计》第11周学习总结

1. 本周学习总结 2. 书面作业 1. 源代码阅读:多线程程序BounceThread 1.1 BallRunnable类有什么用?为什么代码中需要调用Thread.sleep进行休眠? BallRunnable类实现Runnable接口,支持多线程;调用Thread.sleep进行休眠则…

vue使用v-for循环,动态修改element-ui的el-switch

在使用element-ui的el-switch中&#xff0c;因为要用v-for循环&#xff0c;一直没有成功&#xff0c;后来仔细查看文档&#xff0c;发现可以这样写 <el-switch v-for"(item, key) in list" v-model"item.is" :key"key" :active-value"…

前端加按钮将图片另存为_Windows 10系统如何将自己的照片制作成文件夹图标

我们大家都在电脑上建有很多文件夹&#xff0c;有时候查找自己需要的资料文件夹时不太容易&#xff0c;很浪费时间。如果将自己的照片作为常用文件夹的图标&#xff0c;看起来醒目查找时也更为方便些。下面就介绍具体的操作教程。一、将照片格式转换为图标文件格式在电脑上将图…

codeforces 125 A-E 补题

A Measuring Lengths in Baden 进制转换 水题 #include<bits/stdc.h> using namespace std;int main() {int n;scanf("%d",&n);int an/36;n-a*36;int b(n)/3;if((n%3)>2)b;while(b>12)b-12,a1;printf("%d %d\n",a,b);return 0; }B Simple …

在JAXB解组期间应用名称空间

对于某些XML模式来说&#xff0c;它是一组严格的规则&#xff0c;用于规定XML文档的结构方式。 但是对于其他人来说&#xff0c;通常的准则是指出XML的外观。 这意味着有时出于某些原因人们希望接受不符合XML模式的输入。 在此示例中&#xff0c;我将演示如何利用SAX XMLFilter…

java怎么把文件写入到usb里_如何创建PowerShell脚本以将文件复制到USB闪存驱动器?...

此代码最后准备使用可移动驱动器(例如插入的USB驱动器)&#xff1a;$drives [System.IO.DriveInfo]::GetDrives()$r $drives | Where-Object { $_.DriveType -eq Removable -and $_.IsReady }if ($r) {return ($r)[-1]}throw "No removable drives found."这种方式…

利用css transition属性实现一个带动画显隐的微信小程序部件

我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的&#xff0c;但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使&#xff08;下面说明&#xff09;所以我们这个时候会考虑去使用微信官方提供的wx.createAnim…

c语言学生管理系统链表(dev vs2012下可以运行)

struct student { char name[10]; char sex[5]; long int num;//学号 int xuhao; int age; float score[3]; float averange; char DJ;//存放等级哦 struct student *next;};//定义结构体变量保存 名字 性别 年龄 成绩] 结构体声明int n;//存放学生人数int man;//存放统计的男生…

python 东哥 with open_python 连接redis cluster

#!/usr/bin/env python# encoding: utf-8#author: 东哥加油!#file: clear_pool.py#time: 2018/8/28 17:06from rediscluster import StrictRedisClusterimport datetimeimport sysdef redis_cluster():redis_nodes [{host:192.168.15.6,port:6379},{host:192.168.15.7,port:63…

go gcc

http://www.cnblogs.com/zkweb/p/7880099.html转载于:https://www.cnblogs.com/thrillerz/p/7958446.html

抽象工厂设计模式解释

抽象工厂设计模式是工厂设计模式的另一种形式。 这种模式可以被视为“超级工厂”或“工厂工厂”。 抽象工厂设计模式&#xff08;属于“四人帮”的一部分&#xff09;属于“创新设计模式”类别&#xff0c;它提供了一种封装一组具有公共链接的工厂的方法&#xff0c;而无需突出…

app账号退不出去_最新!多交的税可以退,同学,你今天退税了吗?

4.3 号 更新。1、有知友留言&#xff0c;已经收到退税了。2、部分地区陆续开放申报了&#xff0c;建议大家不要着急。3、大家耐心一点&#xff0c;该是你的就是你的&#xff0c;退税这个事多退少补&#xff0c;建议大家在白天上班时间去APP上看看&#xff0c;毕竟相关公务人员也…

【BZOJ2004】[Hnoi2010]Bus 公交线路 状压+矩阵乘法

【BZOJ2004】[Hnoi2010]Bus 公交线路 Description 小Z所在的城市有N个公交车站&#xff0c;排列在一条长(N-1)km的直线上&#xff0c;从左到右依次编号为1到N&#xff0c;相邻公交车站间的距离均为1km。 作为公交车线路的规划者&#xff0c;小Z调查了市民的需求&#xff0c;决定…

课时77.序选择器(掌握)

CSS3中新增的选择器最具代表性的就是序选择器。 1.同级别的第几个 1. :first-child 选中同级别中的第一个标签 注意点&#xff1a;不区分类型 但是我们这里有一个注意点&#xff0c;如果我们在第一个p之前加一个h1&#xff0c;则第一个p就不变红了&#xff0c;因为我们…

Gulp——文件压缩和文件指纹

先看下文件指纹添加成功发布后的“成果”。 首先介绍下gulp的文件压缩&#xff08;压缩css和js&#xff09; &#xff08;下面介绍的代码移步这里&#xff09; 我的文件目录如下&#xff1a; &#xff08;标红部分是生成的处理后的文件&#xff09; 如何使用gulp&#xff0c;请…

java afconsole_Java ——基础语法

package myhello; //本类所在的包的路径import af.util.AfMath;//导入对应的类import java.util.Random;//导入随机数的类public classHelloWorld{public static voidmain(String[] args){int a 8;inti;int total 0;int score 80;System.out.println(a > 8);//空语句 只有…