我目前在读高中。我最近浏览互联网,寻找软件行业员工通常想要的东西以及工作要求是什么样的。
我来了accros一份工作描述,其中一项要求是:
强大的,面向对象的设计和编码技巧(C / C ++和/或Java 最好是在UNIX或Linux平台上)
请注意最后一部分: Java,最好是在UNIX或Linux平台上。
我不明白这一点。 Java是否在虚拟环境/机器内运行?由于Java不能直接与操作系统交互,为什么运行它的OS会有什么影响呢?
答案 0 :(得分:4)
开发人员职位描述可能需要一些操作系统的经验,原因如下:
首先,正如您已经注意到的那样,有些语言直接与操作系统对话,而且代码需要了解底层操作系统(如C / C ++,它们列在您的职位描述中)。
其次,即使编程语言从您那里抽象出任何特定于操作系统的东西(包括文件系统/路径分隔符),您仍然要在上面部署/配置/运行/监视您的应用程序。一些操作系统,你需要知道(至少)基础知识才能做到这一点。
对于Java作业描述,如果UNIX / Linux“是一个加号”,它通常意味着您将在UNIX / Linux系统上运行代码,并且您应该知道如何启动进程(您自己的Java应用程序)或某些应用程序服务器),如何在容器中部署应用程序,如何读取日志文件等等......
答案 1 :(得分:1)
虽然Java语言在virtual machine上运行,但Java library必须抽象访问主机平台上可用的工具。理想情况下,这些抽象是跨平台的,但是魔鬼在细节中 - 因此偏好特定目标平台上的体验。
答案 2 :(得分:1)
虽然在概念上它不应该对java代码执行的目标平台产生任何影响,但实际上,在任何平台上运行代码并不总是那么简单但是相当繁琐的任务。
从易于克服的错误开始,例如使用/
或\
代替java.io.File.separatorChar
或:
/ ;
代替或java.io.File.pathSeparatorChar
最常见的问题包括在本机代码中实现的方法,这些方法在不同平台上通常不兼容。
甚至可能您的雇主正在寻找某人使用JNI实现native
java方法。
答案 3 :(得分:1)
首先,您在Java中运行虚拟机是正确的 - 它不会直接向您公开系统的内部工作方式。但是,这并不意味着每个系统在某种程度上都没有区别 - 操作系统的不同风格具有不同的内核,他们考虑调度的不同方式,处理线程的不同方式以及不同的中断链(Linux具有很多信号,而Windows有一些信号。)
就Java(语言)而言,它在任何地方都运行相同。它实际上是如何完成的依赖于它正在运行的本机JVM。
但是,对于这份工作发布,我不会在UNIX / Linux部分读过太多内容。这或多或少地衡量了在编程Java时有人在UNIX或Linux环境中工作的舒适程度。可用于Java的大多数IDE都是跨平台的,但该商店可能使用Mac或某些* nix(RHEL,Debian,Ubuntu等)。使用命令行/ shell脚本也很重要,因为在命令行上使用UNIX / Linux很方便。
并非每家商店都使用Windows机器进行开发。只是一个单挑。
答案 4 :(得分:1)
Java在不同平台上没有区别。这是Java(可移植性)最突出的特性。 JVM抽象了底层平台。
然而,平台在软件开发方面很重要,而软件开发不仅涉及编码部分。大多数在行业中,开发人员通过登录终端在Linux平台上工作。您没有Windows中的GUI和NetBeans这样的好IDE。因此,在这种情况下,您应该知道如何从终端编译和运行java程序。
示例,在linux中,为了创建一个包,你创建一个目录(文件夹),比如myJava /。你进入它(cd myJava)并编写SomeThing.java文件并使用 javac SomeThing.java 进行编译,你得到一个SomeThing.class文件(在myJava中)。现在,为了执行此操作,您需要使用 java 命令。在使用它之前,您需要移动到包含此包的父目录。然后执行 java myJava.SomeThing 。除非你在Linux平台上玩游戏,否则你不会知道这一点。设置类路径等其他事项也是值得关注的问题