Java 后端到底是在做啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 后端到底是在做啥?相关的知识,希望对你有一定的参考价值。
“听说程序员工资很高,想学Java语言,但不知道它到底能做什么?”
如果你是一个Java初学者,你可能对Java应用在什么地方感到困惑。除了“马里奥”“贪吃蛇”等经典游戏,其他领域好像也找不到Java的踪迹,那么Java究竟能做什么?学完Java可以从事什么工作呢?
一个令你吃惊的数据可以证明Java无处不在: 超过30亿的设备正在运行Java!
一、Java22年的发展
从Java在1995年的正式发布至今已经22年了。22年来,Java语言正在不断进化,而其技术应用也在不断扩大进步。
1995年,从诞生第一年,便有8.3万网页使用Java技术制作。
1998年始,Java的第二代J2EE、J2ME、J2SE、陆续诞生。J2EE即企业版Java,应用于服务器,J2ME应用于移动环境,J2SE应用于桌面环境。
2007年,Google和84家硬件制造商、软件开发商等组件Android系统。而Android程序是用Java编写的。
2017年,而最近渐渐发展起来的AI、大数据、云计算、物联网等无不是用Java作为基础。
二、作为Java工程师需掌握的技能
1、Web前端技术 (HTML5、CSS、JS、jQuery、Ajax)
2、互联网架构(Nginx、Redis、MQ)
3、Web服务器端编程(Java基础、Servlet、SSH、SSM)
4、数据库技术(Oracle、MySQL)
三、Java的技术应用
1、学习Java可以做网站
Java可以用来编写网站,现在很多大型网站都用Jsp写的,JSP全名Java Server Pages。
它是一种动态网页技术,比如我们熟悉的淘宝,以及一些政府网站都是采用JSP编写的。
所以学习Java的同学可以找开发网站方面的工作,而且现在找这方面的岗位比较多。
比如:网站开发,当然就是JSP+Servlet+JavaBean,一直以来都相当流行。
2、学习Java可以做Android
Android是一种基于Linux的自由及开放源代码的操作系统,其源代码是Java。
所以市场上见到的手机系统例如MIUI ,阿里OS,乐蛙等,都是修改源代码再发行的。
Java做安卓不单单是指系统,还有APP对于更多的开发人员来说,他们更多的时间是花在开发APP上面。
3、学习Java可以做游戏
或者你不知道,在以前诺基亚还很流行的时候,你玩的手机游戏有90%以上都是Java开发的。
当然现在已经很少人再去开发了,都转到安卓上去了。
电脑上也有Java开发的游戏,最经典的是:《我的世界》(minecraft ,简称MC),当今世界最具人气和影响力的网络游戏之一《英雄联盟》(简称lol)。
4、学习Java可以做软件
一般编程语言都可以做软件的,Java 也不例外,例如Eclipse,MyEclipse等知名Java开发工具.有关开发软件组件,可以了解Java Swing编程 或者 awt 相关知识。
比如:企业级应用开发,这里是JAVA的天地,大到全国联网的系统,小到中小企业的应用解决方案,Java都占有极为重要的地位。
另外还有移动领域,典型的应用是手机游戏(国内主要是这方面),这里是Java ME的天地,其实应用范围是很广的。
Java已成为当今市面上最受欢迎的编程软件,对于处于信息高速发达的今天,Java技术已经无处不在,手机软件、手机JAVA游戏、电脑软件等等。
可以这样说,只要你使用手机、电脑等电子产品,你就会用到跟Java有关的东西。由此可见,对于我们这些将要面临巨大就业压力的大学生来说,掌握这样一款最流行的编程语言是多么重要。
5、嵌入式:Write Once,Run Anywhere。嵌入式领域仿佛为Java量身打造。
6、大数据:Hadoop以及其他大数据处理技术很多都是用Java。
7、科学应用:Java的安全性、便携性让Java在科学应用、金融服务、空间巨大。
Java作为软件行业默认开发语言在各个领域均有广泛应用,相关从业者也都认为Java有着光明的未来。可以这样说,只要你使用手机、电脑等电子产品,你就会用到跟Java有关的东西。由此可见,对于我们这些将要面临巨大就业压力的大学生来说,掌握这样一款最流行的编程语言是多么重要。很多人在面临学习这门语言上犯了难,不知道应该怎么入门,其实最高效,比较便捷的方法就是找一个系统的教学视频,从基础入手
参考技术A 1.用来编写网站。现在很多大型网站都用jsp写的,JSP 全名为 Java Server Pages。它是一种动态网页技术,比如我们熟悉的一些搜索网站、政府网站都是采用JSP编写的。所以学习Java的同学可以找编写网站方面的工作,而且现在找这方面的岗位比较多。2.做Android。Android是一种基于Linux的自由及开放源代码的操作系统,其源代码是Java。所以市场上见到的手机系统例如MIUI ,阿里云,乐蛙等,都是修改源代码再发行的。Java做安卓不单单是指系统,还有APP,对于更多的开发人员来说,他们更多的时间是花在开发APP上面。
3.做游戏。比如说俄罗斯方块(TETRIS)、超级泡泡龙(SUPER BUBBLE BOBBLE)、超级马里奥(SUPER MARIO BROS)、贪吃蛇(RETRO SNAKER)。
4.做软件。一般编程语言都可以做软件的,Java 也不例外,例如Eclipse,MyEclipse等知名Java开发工具。有关开发软件组件,可以了解Java Swing编程或者awt 相关知识。
5.做大数据。都说现在是数据时代。各种大数据技术层出不穷。目前处理大数据的技术有python,java,R等。虽然说java没有绝对的优势,但是也是一大霸主。 参考技术B 学了Java到底能做什么工作,这个问题让初次接触Java的人很迷茫。其实Java可以做的东西太多了,由于Java拥有很高的安全性和平台移植性,因此受到了很多Java程序员们的爱戴。手机游戏、中间件、软件、网站、以及如今非常火的手机app等等,都是通过Java语言编写的。
1、Java可以用来编写网站
对于学生来说,最关心的是Java能做什么,市场上招什么工作跟Java有关。现在很多大型网站都用jsp写的,JSP全名为JavaServerPages。
它是一种动态网页技术,比如我们熟悉的163,一些政府网站都是采用JSP编写的。所以学习Java的同学可以找编写网站方面的工作,而且现在找这方面的岗位比较多。
2、Java可以做Android
Android是一种基于Linux的自由及开放源代码的操作系统,其源代码是Java。所以市场上见到的手机系统例如MIUI,阿狸云,乐蛙等,都是修改源代码再发行的。
Java做安卓不单单是指系统,还有APP.对于更多的开发人员来说,他们更多的时间是花在开发APP上面。
3、Java可以做游戏
或者你不知道,在以前诺基亚还很流行的时候,你玩的手机游戏有90%以上都是Java开发的。当然现在已经很少人再去开发了,都转到安卓上去了。电脑上也有Java开发的游戏,最经典的是:《我的世界》(minecraft,简称MC)。
4、Java可以做软件
一般编程语言都可以做软件的,Java也不例外,例如Eclipse,MyEclipse等知名Java开发工具。有关开发软件组件,可以了解JavaSwing编程或者awt相关知识。
5、其他
除了以上所提的Java语言应用范围之外,家里的洗衣机、微波炉等家电都有可能是通过Java语言程序控制的呢。最重要的是要找到自己的一个兴趣所在,专攻一个领域,坚持下去才会做出成绩。
希望以上的回答能帮到大家! 参考技术C 新手程序员通常会走入一个误区,就是认为学习了一门语言,就可以称为是某某语言工程师了。但事实上真的是这样吗?其实并非如此。
今天我们就来聊一聊,Java 开发工程师到底开发的是什么东西。准确点来说,Java后端到底在做什么?
大家都知道 Java 是一门后端语言,后端指的就是服务端,服务端代码一般运行在服务器上,通常我们运行Java 程序的服务器都是 Linux 服务器。
这些服务器在互联网公司中一般放在一个叫做机房的地方里,于是像我们这类 Java 程序员的代码一般也运行在这些机房里的服务器中。
C 结构点运算符到底是做啥的(低级视角)?
【中文标题】C 结构点运算符到底是做啥的(低级视角)?【英文标题】:What exactly does the C Structure Dot Operator Do (Lower Level Perspective)?C 结构点运算符到底是做什么的(低级视角)? 【发布时间】:2016-02-23 21:56:34 【问题描述】:我有一个关于 C 中的结构的问题。因此,当您创建一个结构时,您实际上是在定义一块内存的框架。因此,当您创建结构的实例时,您正在创建一个内存块,以便它能够容纳一定数量的元素。
但是,我对点运算符的作用有些困惑。如果我有一个struct Car
并且有一个名为GasMileage
的成员(这是一个int
成员),我可以通过执行类似的操作来获得GasMileage
的值,
int x = CarInstance.GasMileage;
但是,我对这个点运算符的实际情况感到困惑。点运算符是否只是作为基地址的偏移量?它又是如何推断出它是一个 int 的呢?
我想我很好奇幕后发生了什么。是否可以通过做其他事情来引用GasMileage
?比如
int *GasMileagePointer = (&carInstance + offsetInBytes(GasMileage));
int x = *GasMileage
这只是我迅速编造出来的。我一直在努力寻找一个好的解释,但似乎没有什么比将点运算符视为魔术更能解释它了。
【问题讨论】:
How can I get/set a struct member by offset。至少解决您问题的第二部分。 也许一本关于编译器构造的书会是一本不错的读物。 @Olaf:您无需了解编译器构造即可了解.
运算符的语义。
编译器推断CarInstance.GasMileage
是int
,因为GasMileage
成员被定义为int
。
@KeithThompson:OP 要求提供实施细节。这是 CC 的一部分。此外,我预计这不会是他在这个领域可能遇到的唯一问题。所以打好基础是个好主意。
【参考方案1】:
当您使用 .
运算符时,编译器会将其转换为 struct
内的偏移量,具体取决于它前面的字段(和填充)的大小。
例如:
struct Car
char model[52];
int doors;
int GasMilage;
;
假设int
为4字节且无填充,则model
的偏移量为0
,doors
的偏移量为52
,GasMilage
的偏移量为56。
所以如果你知道成员的偏移量,你可以像这样得到一个指向它的指针:
int *GasMileagePointer = (int*)((char *)&carInstance + offsetInBytes(GasMile));
强制转换为char *
是必要的,这样指针算术一次只处理1 个字节,而不是一次处理1 个sizeof(carInstance)
。然后需要将结果转换为正确的指针类型,在本例中为int *
【讨论】:
【参考方案2】:是的,点运算符只是从结构的基址应用一个偏移量,然后访问该地址处的值。
int x = CarInstance.GasMileage;
相当于:
int x = *(int *)((char*)&CarInstance + offsetof(Car, GasMileage));
对于具有其他类型T
的成员,唯一的区别是演员(int *)
变为(T *)
。
【讨论】:
【参考方案3】:点运算符只是选择成员。
由于编译器有关于成员(实际上是所有成员)的 type(以及因此 size)的信息,它知道该成员从一开始的偏移量结构,并且可以生成适当的指令。它可能会生成一个 base+offset 访问,但它也可以直接访问该成员(甚至将其缓存在寄存器中)。编译器拥有所有这些选项,因为它在编译时拥有所有必要的信息。
如果没有,例如 不完整类型,您将收到编译时错误。
【讨论】:
【参考方案4】:当它起作用时,“。” “。”的行为运算符相当于获取结构的地址,通过成员的偏移量对其进行索引,并将其转换为成员类型的指针,然后取消引用。但是,该标准规定在某些情况下不能保证有效。例如,给定:
struct s1 int x,y;
struct s2 int x,y;
void test1(struct s1 *p1, struct s2 *p2)
s1->x++;
s2->x^=1;
s1->x--;
s2->x^=1;
编译器可能会认为 p1->x 和 p2->x 没有合法的方法 可以识别同一个对象,所以它可以重新排序代码以便 ++ 和 -- 对 s1->x 取消的操作,以及对 s2->x 取消的 ^=1 操作, 从而留下一个什么都不做的函数。
请注意,使用联合时的行为是不同的,因为已给出:
union u struct s1 v1; struct s2 v2; ;
void test2(union u *uv)
u->v1.x^=1;
u->v2.x++;
u->v1.x^=1;
u->v2.x--;
common-initial-subsequence 规则表明,由于 u->v1 和 u->v2 从相同类型的字段开始,访问 u->v1 中的此类字段是 相当于访问 u->v2 中的相应字段。因此,一个 编译器不允许重新排序。另一方面,给定
void test1(struct s1 *p1, struct s2 *p2);
void test3(union u *uv)
test1(&(u.v1), &(u.v2));
u.v1 和 u.v2 以匹配字段开头的事实并不能防止 编译器假设指针不会别名。
请注意,有些编译器提供了一个选项来强制生成代码
成员访问的行为总是等同于上述指针
操作。对于 gcc,选项是 -fno-strict-alias
。如果代码需要
访问不同结构类型的常见初始成员,省略
switch 可能会导致一个人的代码以怪异、怪异和不可预测的方式失败
方式。
【讨论】:
以上是关于Java 后端到底是在做啥?的主要内容,如果未能解决你的问题,请参考以下文章