- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我找到了 this问题,这个 other ,如此有趣以至于引出了几个问题,至少对我而言:
相当开放式的问题,但是 jshell
被限制 在哪里?显然,GUI 应用程序不属于 jshell
解决方案或 IDE 替代品的领域:
Out of scope are graphical interfaces and debugger support. The JShell API is intended to allow JShell functionality in IDEs and other tools, but the jshell tool is not intended to be an IDE.
维恩图或其他视觉效果的奖励积分。
当然,片段的大小应该受到限制。我想问的是哪些问题无法用代码片段解决。
另见:
最佳答案
回答更新后的问题
所有问题都可以用代码片段解决(也可以用足够复杂的 shell 脚本)。但 JShell 最适合用于调试和学习 java - 一个成熟的程序对于所有其他用例来说要灵活得多。
JShell、.jsh 和 java MyClass.java
JShell是一个用于尝试 java 代码的交互式 shell。本质上,它是一个 REPL对于Java。
由于 JShell 完全是关于您输入代码片段,然后它会对其进行评估,并且将这些片段放在一个文件中而不是多次编写它们通常是有意义的,JShell 支持 .jsh
脚本,其中包含要由 JShell 解释的片段集合。从这个意义上说,这类似于 bash 接受 .sh
文件或 command.com 接受 .bat
文件——逐行键入它们等同于导入它们。
Single-source java-file execution是一个非常不同的野兽。从 JDK 11 开始,它被糖取代了,
java MyClass.java arg1 arg2 arg3
通过相当于编写的本地脚本
TMPDIR=$(mktemp -d)
javac -d $TMPDIR MyClass.java
java -cp $TMPDIR MyClass arg1 arg2 arg3
rm -rf $TMPDIR
这允许使用单个命令从命令行快速执行单一源文件,而无需在各处留下它们的编译类(不需要创建实际的临时目录,如 java
可以将这些类存储在内存中)。由于他们在 java
中已经有 3 种其他执行模式(用于类、jar 文件和模块),因此将其添加为第四种模式并不是一件容易的事。
Java 作为脚本语言
既然区别很明显(.jsh 用于 JShell,单源 java 可执行文件仅用于,您猜对了,单源 java 可执行文件),那么使用 Java 作为脚本语言怎么样?
您始终可以选择编写启动器;例如,
#!/bin/bash
java -jar MyApp.jar
已经工作了很长时间。直接命名一个类在技术上是可行的,但不是很有用,因为在分发二进制文件时 jar 文件要方便得多——一方面,它们避免将包结构镜像为一堆文件夹。然而,将启动器脚本与实际的 Java 代码分开仍然有些不友好:您现在需要将两者放在一起,或者至少让启动器能够找到要启动的实际 .jar。
现在,他们还引入了以下快捷方式:无论文件名或扩展名如何,您都可以使用“shebang 前缀”分发您的 java 源代码,如下所示:
#!/path/to/java --source 11
<source of MyClass.java>
将其标记为可执行文件,并从命令行启动它,就像您可以启动任何其他可执行文件一样。例如,将其复制并粘贴到 helloworld
文件中(并在尝试运行之前修复 jdk 位置):
#!/opt/jdk-11.0.1/bin/java --source 11
public class Test {
public static void main(String ... args) {
System.out.println("Hello " + (args.length == 0 ? "world!" : args[0]));
}
}
将其标记为可执行后,您可以直接启动它
$ ./helloworld
Hello world!
它甚至正确地接受了它的论点:
$ ./helloworld Bob!
Hello bob!
对于小程序,如果您不需要在 JDK 之外引入额外的库,现在分发 Java 代码以供命令行使用将变得非常容易。
Java 仍然不是“脚本语言”(它永远不会与 python 竞争),但是
关于java - JShell 的限制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53867043/
我有一个 ServiceBusQueue(SBQ),它获取大量消息负载。我有一个具有 accessRights(manage) 的 ServiceBusTrigger(SBT),它不断轮询来自 SBQ
在下面给出的结果集中,有 2 个唯一用户 (id),并且查询中可能会出现更多此类用户: 这是多连接查询: select id, name, col1Code, col2Code, col2Va
我正在用 Python 2.7.3 编写一个带有 GRequests 的小脚本和 lxml 可以让我从各种网站收集一些收藏卡价格并进行比较。问题是其中一个网站限制了请求的数量,如果我超过它,就会发回
我想知道何时实际使用删除级联或删除限制以及更新级联或更新限制。我对使用它们或在我的数据库中应用感到很困惑。 最佳答案 在外键约束上使用级联运算符是一个热门话题。 理论上,如果您知道删除父对象也将自动删
下面是我的输出,我只想显示那些重复的名字。每个名字都是飞行员,数字是飞行员驾驶的飞机类型。我想显示驾驶不止一架飞机的飞行员的姓名。我正在使用 sql*plus PIL_PILOTNAME
我正在评估不同的移动框架,我认为 nativescript 是一个不错的选择。但我不知道开发过程是否存在限制。例如,我对样式有限制(这并不重要),但我想知道将来我是否可以有限制并且不能使用某些 nat
我正在尝试使用 grails 数据绑定(bind)将一些表单参数映射到我的模型中,但我认为在映射嵌入式集合方面可能存在一些限制。 例如,如果我提交一些这样的参数,那么映射工作正常: //this wo
是否可以将 django 自过滤器起的时间限制为 7 天。如果日期超过 7 天,则不应用过滤器 最佳答案 timesince 的源代码位于 django/django/utils/timesince.
我想在我的网站上嵌入一个 PayPal 捐赠按钮。但问题是我住在伊朗——这个国家受到制裁,人们不使用国际银行账户或主要信用卡。 有什么想法吗?请帮忙! 问候 沮丧 最佳答案 您可以在伊朗境内使用为伊朗
这是我的查询 select PhoneNumber as _data,PhoneType as _type from contact_phonenumbers where ContactID = 3
这个问题在这里已经有了答案: What is the maximum number of parameters passed to $in query in MongoDB? (4 个答案) 关闭
我的一个项目的 AndroidManifest.xml 变得越来越大(> 1000 行),因为我必须对某些文件类型使用react并且涵盖所有情况变得越来越复杂。我想知道 list 大小是否有任何限制。
在使用 Sybase、Infomix、DB2 等其他数据库产品多年后使用 MySQL 5.1 Enterprise 时;我遇到了 MySQL 不会做的事情。例如,它只能为 SELECT 查询生成 EX
这个问题在这里已经有了答案: What is the maximum number of parameters passed to $in query in MongoDB? (4 个回答) 关闭5年
通常我们是在{$apache}/conf/httpd.conf中设置Apache的参数,然而我们并没有发现可以设置日志文件大小的配置指令,通过参考http://httpd.apache.org/do
我正在搜索最大的 Android SharedPreferences 键值对,但找不到任何好的答案。其次,我想问一下,如果我有一个键,它的字符串值限制是多少。多少字符可以放入其中。如果我需要频繁更改值
我目前正在试验 SoundCloud API,并注意到我对/tracks 资源的 GET 请求一次从不返回超过 200 个结果。关于这个的几个问题: 这个限制是故意的吗? 有没有办法增加这个限制? 如
我正在与一家名为 Dwolla 的金融技术公司合作,该公司提供了一个 API,用于将银行信息附加到用户并收取/发送 ACH 付款。 他们需要我将我的 TLS 最低版本升级到 1.2(禁用 TLS 1.
我在 PHP 中有一个多维数组,如下所示: $array = Array ( [0] => Array ( [bill] => 1 ) [1] => Array ( [
我在获取下一个查询的第一行时遇到了问题: Select mar.Title MarketTitle, ololo.NUMBER, ololo.Title from Markets mar JOIN(
我是一名优秀的程序员,十分优秀!