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.GasMileageint,因为GasMileage 成员被定义为int @KeithThompson:OP 要求提供实施细节。这是 CC 的一部分。此外,我预计这不会是他在这个领域可能遇到的唯一问题。所以打好基础是个好主意。 【参考方案1】:

当您使用 . 运算符时,编译器会将其转换为 struct 内的偏移量,具体取决于它前面的字段(和填充)的大小。

例如:

struct Car 
    char model[52];
    int doors;
    int GasMilage;
;

假设int为4字节且无填充,则model的偏移量为0doors的偏移量为52GasMilage的偏移量为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 后端到底是在做啥?的主要内容,如果未能解决你的问题,请参考以下文章

用大白话告诉你 :Java 后端到底是在做什么?

用大白话告诉你 :Java 后端到底是在做什么?

java程序员一般都是做啥项目的啊?

Java后端看懂Spring源码,到底有没有用?

到底什么是后端开发?

前端用node做啥