added native-image plugin

This commit is contained in:
2023-10-05 21:33:54 +08:00
parent 70123e1c08
commit 16d2bffde6
37 changed files with 290 additions and 60 deletions

View File

@@ -2,6 +2,7 @@ plugins {
id 'java-library' id 'java-library'
alias(catalog.plugins.lombok) alias(catalog.plugins.lombok)
alias(catalog.plugins.envelope) alias(catalog.plugins.envelope)
alias(catalog.plugins.native.image)
} }
repositories { repositories {
@@ -12,7 +13,6 @@ dependencies {
implementation project(':') implementation project(':')
} }
envelopeJar { application {
mainClass = 'net.woggioni.jwo.benchmark.Main' mainClass = 'net.woggioni.jwo.benchmark.Main'
} }

View File

@@ -0,0 +1,6 @@
[
{
"name":"java.lang.Boolean",
"methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }]
}
]

View File

@@ -0,0 +1 @@
Args=-H:Optimize=3 --initialize-at-build-time=net.woggioni.jwo.benchmark.Main

View File

@@ -0,0 +1,8 @@
[
{
"type":"agent-extracted",
"classes":[
]
}
]

View File

@@ -0,0 +1,2 @@
[
]

View File

@@ -0,0 +1,128 @@
[
{
"name":"com.sun.crypto.provider.AESCipher$General",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.crypto.provider.ARCFOURCipher",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.crypto.provider.DESCipher",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.crypto.provider.DESedeCipher",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.crypto.provider.GaloisCounterMode$AESGCM",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"java.security.AlgorithmParametersSpi"
},
{
"name":"java.security.KeyStoreSpi"
},
{
"name":"java.security.SecureRandomParameters"
},
{
"name":"javax.security.auth.x500.X500Principal",
"fields":[{"name":"thisX500Name"}],
"methods":[{"name":"<init>","parameterTypes":["sun.security.x509.X500Name"] }]
},
{
"name":"sun.security.pkcs12.PKCS12KeyStore",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.pkcs12.PKCS12KeyStore$DualFormatPKCS12",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.provider.JavaKeyStore$JKS",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.provider.NativePRNG",
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
},
{
"name":"sun.security.provider.SHA",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.provider.X509Factory",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.rsa.RSAKeyFactory$Legacy",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.ssl.SSLContextImpl$DefaultSSLContext",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.x509.AuthorityInfoAccessExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.AuthorityKeyIdentifierExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.BasicConstraintsExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.CRLDistributionPointsExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.CertificatePoliciesExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.ExtendedKeyUsageExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.IssuerAlternativeNameExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.KeyUsageExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.NetscapeCertTypeExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.PrivateKeyUsageExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.SubjectAlternativeNameExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"sun.security.x509.SubjectKeyIdentifierExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
}
]

View File

@@ -0,0 +1,7 @@
{
"resources":{
"includes":[{
"pattern":"\\Qrender_template_test.txt\\E"
}]},
"bundles":[]
}

View File

@@ -0,0 +1,8 @@
{
"types":[
],
"lambdaCapturingTypes":[
],
"proxies":[
]
}

View File

@@ -2,9 +2,9 @@ package net.woggioni.jwo.benchmark;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import net.woggioni.jwo.Chronometer; import net.woggioni.jwo.Chronometer;
import net.woggioni.jwo.CircularInputStream;
import net.woggioni.jwo.CollectionUtils; import net.woggioni.jwo.CollectionUtils;
import net.woggioni.jwo.JWO; import net.woggioni.jwo.JWO;
import net.woggioni.jwo.CircularInputStream;
import net.woggioni.jwo.Tuple2; import net.woggioni.jwo.Tuple2;
import java.io.InputStream; import java.io.InputStream;

View File

@@ -3,6 +3,7 @@ plugins {
id 'maven-publish' id 'maven-publish'
alias(catalog.plugins.multi.release.jar) alias(catalog.plugins.multi.release.jar)
alias(catalog.plugins.lombok) alias(catalog.plugins.lombok)
alias(catalog.plugins.sambal)
} }
allprojects { allprojects {
@@ -18,6 +19,14 @@ allprojects {
pluginManager.withPlugin('java-library') { pluginManager.withPlugin('java-library') {
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
vendor = JvmVendorSpec.GRAAL_VM
}
}
dependencies { dependencies {
testImplementation catalog.junit.jupiter.api testImplementation catalog.junit.jupiter.api
testImplementation catalog.junit.jupiter.params testImplementation catalog.junit.jupiter.params
@@ -36,6 +45,14 @@ allprojects {
} }
pluginManager.withPlugin('maven-publish') { pluginManager.withPlugin('maven-publish') {
pluginManager.withPlugin('java-library') {
java {
withJavadocJar()
withSourcesJar()
}
}
publishing { publishing {
repositories { repositories {
maven { maven {
@@ -51,11 +68,6 @@ allprojects {
} }
} }
java {
withJavadocJar()
withSourcesJar()
}
ext { ext {
setProperty('jpms.module.name', 'net.woggioni.jwo') setProperty('jpms.module.name', 'net.woggioni.jwo')
} }
@@ -70,11 +82,6 @@ dependencies {
pathClassloaderTest group: 'com.google.inject', name: 'guice', version: getProperty('guice.version') pathClassloaderTest group: 'com.google.inject', name: 'guice', version: getProperty('guice.version')
} }
java {
withJavadocJar()
withSourcesJar()
}
compileJava { compileJava {
options.release = 8 options.release = 8
options.compilerArgs << '-parameters' options.compilerArgs << '-parameters'
@@ -104,5 +111,3 @@ test {
} }

View File

@@ -1,3 +1,3 @@
jwo.version = 2023.10.01 jwo.version = 2023.10.05
lys.version = 2023.09.26 lys.version = 2023.10.05
guice.version = 5.0.1 guice.version = 5.0.1

View File

@@ -2,6 +2,7 @@ plugins {
id 'java-library' id 'java-library'
alias(catalog.plugins.lombok) alias(catalog.plugins.lombok)
alias(catalog.plugins.envelope) alias(catalog.plugins.envelope)
alias(catalog.plugins.native.image)
} }
repositories { repositories {
@@ -12,7 +13,10 @@ dependencies {
implementation project(':jmath') implementation project(':jmath')
} }
envelopeJar { application {
mainClass = 'net.woggioni.jmath.benchmark.Main' mainClass = 'net.woggioni.jmath.benchmark.Main'
} }
configureNativeImage {
args('20')
}

View File

@@ -0,0 +1,2 @@
[
]

View File

@@ -0,0 +1 @@
Args=-H:Optimize=3 --initialize-at-build-time=net.woggioni.jmath.benchmark.Main

View File

@@ -0,0 +1,8 @@
[
{
"type":"agent-extracted",
"classes":[
]
}
]

View File

@@ -0,0 +1,2 @@
[
]

View File

@@ -0,0 +1,2 @@
[
]

View File

@@ -0,0 +1,5 @@
{
"resources":{
"includes":[]},
"bundles":[]
}

View File

@@ -0,0 +1,8 @@
{
"types":[
],
"lambdaCapturingTypes":[
],
"proxies":[
]
}

View File

@@ -11,8 +11,4 @@ dependencies {
java { java {
withJavadocJar() withJavadocJar()
withSourcesJar() withSourcesJar()
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
} }

View File

@@ -4,7 +4,6 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.Objects;
@NoArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(access = AccessLevel.PRIVATE)
public class BigIntegerExt { public class BigIntegerExt {
@@ -29,21 +28,6 @@ public class BigIntegerExt {
return a; return a;
} }
// static BigInteger gcd(BigInteger n1, BigInteger n2) {
// BigInteger remainder;
// BigInteger result;
// while (true) {
// remainder = n1.mod(n2);
// result = n2;
// if (BigInteger.ZERO.equals(remainder)) break;
// else {
// n1 = n2;
// n2 = remainder;
// }
// }
// return result;
// }
public static BigInteger mcm(BigInteger n1, BigInteger n2) { public static BigInteger mcm(BigInteger n1, BigInteger n2) {
return n1.multiply(n2).divide(gcd(n1, n2)); return n1.multiply(n2).divide(gcd(n1, n2));
} }

View File

@@ -4,7 +4,6 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.Optional;
import java.util.Random; import java.util.Random;
import java.util.function.IntFunction; import java.util.function.IntFunction;
import java.util.stream.IntStream; import java.util.stream.IntStream;

View File

@@ -9,9 +9,10 @@ import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource; import org.junit.jupiter.params.provider.ArgumentsSource;
import java.math.BigInteger; import java.math.BigInteger;
import static java.math.BigInteger.valueOf;
import java.util.stream.Stream; import java.util.stream.Stream;
import static java.math.BigInteger.valueOf;
public class RationalTest { public class RationalTest {
private enum Operation { private enum Operation {

View File

@@ -1,6 +1,20 @@
package net.woggioni.jwo; package net.woggioni.jwo;
import java.util.*; import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.BinaryOperator; import java.util.function.BinaryOperator;
import java.util.function.Function; import java.util.function.Function;

View File

@@ -1,10 +1,6 @@
package net.woggioni.jwo; package net.woggioni.jwo;
import lombok.SneakyThrows;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -2,7 +2,12 @@ package net.woggioni.jwo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import java.util.*; import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Objects;
import static java.lang.Math.min; import static java.lang.Math.min;

View File

@@ -2,7 +2,11 @@ package net.woggioni.jwo;
import lombok.Getter; import lombok.Getter;
import java.util.*; import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Stream; import java.util.stream.Stream;

View File

@@ -11,9 +11,17 @@ import java.net.URI;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.net.URLStreamHandler; import java.net.URLStreamHandler;
import java.nio.file.*; import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
/** /**
* A classloader that loads classes from a {@link Path} instance * A classloader that loads classes from a {@link Path} instance

View File

@@ -1,8 +1,9 @@
package net.woggioni.jwo; package net.woggioni.jwo;
import net.woggioni.jwo.internal.Tuple2Impl;
import java.util.Comparator; import java.util.Comparator;
import java.util.function.Function; import java.util.function.Function;
import net.woggioni.jwo.internal.Tuple2Impl;
public interface Tuple2<T, U> { public interface Tuple2<T, U> {
T get_1(); T get_1();

View File

@@ -1,8 +1,9 @@
package net.woggioni.jwo; package net.woggioni.jwo;
import java.util.Comparator;
import net.woggioni.jwo.internal.Tuple3Impl; import net.woggioni.jwo.internal.Tuple3Impl;
import java.util.Comparator;
public interface Tuple3<T, U, V> { public interface Tuple3<T, U, V> {
T get_1(); T get_1();
U get_2(); U get_2();

View File

@@ -1,7 +1,6 @@
package net.woggioni.jwo; package net.woggioni.jwo;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import net.woggioni.jwo.CircularBuffer;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@@ -10,7 +10,14 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.file.*; import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
import java.util.NavigableMap; import java.util.NavigableMap;
import java.util.Objects; import java.util.Objects;

View File

@@ -3,7 +3,6 @@ package net.woggioni.jwo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.EnabledOnOs;
import org.junit.jupiter.api.condition.OS; import org.junit.jupiter.api.condition.OS;
@@ -11,13 +10,19 @@ import org.junit.jupiter.api.io.TempDir;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource;
import java.io.*; import java.io.InputStreamReader;
import java.io.Reader;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.attribute.PosixFileAttributes; import java.nio.file.attribute.PosixFileAttributes;
import java.nio.file.attribute.UserPrincipal; import java.nio.file.attribute.UserPrincipal;
import java.util.*; import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.TreeMap;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@@ -8,7 +8,12 @@ import org.junit.jupiter.api.Test;
import java.io.Serializable; import java.io.Serializable;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.function.Function; import java.util.function.Function;
@EqualsAndHashCode @EqualsAndHashCode

View File

@@ -1,7 +1,6 @@
package net.woggioni.jwo; package net.woggioni.jwo;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import net.woggioni.jwo.PathClassLoader;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@@ -5,7 +5,12 @@ import lombok.RequiredArgsConstructor;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.*; import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;

View File

@@ -7,7 +7,11 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.MethodSource;
import java.io.*; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.security.DigestInputStream; import java.security.DigestInputStream;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.Arrays; import java.util.Arrays;