Currently, to use the javac server, a horrendously long command line option is 
created, looking like this: `--server:portfile=<path to 
portfile>:sjavac=<command to launch server>`, where the sjavac command has had 
all spaces replaced by %20. Since Project Jigsaw, the set of module arguments 
needed is huge to begin with, making this command line incomprehensible after 
mangling.

Apart from making java command lines hard to read (and copy/paste!) by 
developers, it also makes it hard for scripts to parse. The upcoming winenv 
rewrite is dependent on being able to differentiate between path names and 
other arguments, which is not possible in this mess.

So, instead, let's write it to a file, without any escaping, and just pass the 
configuration file name to the server.

Note that this will change the behavior of the javac server, but as the source 
code states this is not a documented or externally supported API no CSR is 
needed. 

I also cleaned up some code in SjavacClient, in particular code relating to the 
passing of arguments. (We never change poolsize or keepalive when we call it.)

-------------

Commit messages:
 - 8256308: Send arguments to javac server in a config file

Changes: https://git.openjdk.java.net/jdk/pull/1195/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1195&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8256308
  Stats: 118 lines in 3 files changed: 48 ins; 33 del; 37 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1195.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1195/head:pull/1195

PR: https://git.openjdk.java.net/jdk/pull/1195

Reply via email to