Jdbi: JDK9 рдореЙрдбреНрдпреВрд▓ рдкрд░ рд╕реЗрдЯ рдПрдХреНрд╕реЗрд╕рд┐рдмрд▓ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдЧрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рд╕рд┐рддре░ 2016  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jdbi/jdbi

рд╣рдо setAccessible(true) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрдирд╢реАрд▓ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВред JDK9 рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, DefaultMethodHandler рдПрд╕рдХреНрдпреВрдПрд▓ рд╡рд╕реНрддреБ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ setAccessible рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ MethodHandle.Lookup рдирд┐рдЬреА рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рддрд╛рдХрд┐ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрд╣реНрд╡рд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( "рд╕реБрдкрд░") рд╡рд┐рдзрд┐ред

рджреЗрдЦреЛ:

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕реЗ рдЕрдЧрд▓реА рдЬреЗрдбреАрдмреАрдЖрдИ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП--рд╢рд╛рдпрдж v3.2.0

рд╕рднреА 22 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ JDK 9-ea+136 рдкрд░ рдирд╡реАрдирддрдо JDBI рд╕реНрдиреИрдкрд╢реЙрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

java.lang.RuntimeException: java.lang.IllegalAccessException: access to public member failed: org.jdbi.v3.sqlobject.TestSqlObject$Dao.doesTransactionAnnotationWork()boolean/invokeSpecial, from org.jdbi.v3.sqlobject.TestSqlObject$Dao/2 (unnamed module @34b7bfc0)

    at org.jdbi.v3.sqlobject.DefaultMethodHandler.invoke(DefaultMethodHandler.java:63)
    at org.jdbi.v3.sqlobject.TransactionDecorator.lambda$invoke$0(TransactionDecorator.java:54)
    at org.jdbi.v3.core.transaction.LocalTransactionHandler.inTransaction(LocalTransactionHandler.java:173)
    at org.jdbi.v3.core.Handle.inTransaction(Handle.java:478)
    at org.jdbi.v3.sqlobject.TransactionDecorator.invoke(TransactionDecorator.java:57)
    at org.jdbi.v3.sqlobject.SqlObjectFactory.lambda$createInvocationHandler$18(SqlObjectFactory.java:241)
    at com.sun.proxy.$Proxy16.doesTransactionAnnotationWork(Unknown Source)
    at org.jdbi.v3.sqlobject.TestSqlObject.testTransactionAnnotationWorksOnInterfaceDefaultMethod(TestSqlObject.java:115)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-ea/Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-ea/NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-ea/DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(java.base@9-ea/Method.java:535)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
    at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-ea/Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-ea/NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-ea/DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(java.base@9-ea/Method.java:535)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.IllegalAccessException: access to public member failed: org.jdbi.v3.sqlobject.TestSqlObject$Dao.doesTransactionAnnotationWork()boolean/invokeSpecial, from org.jdbi.v3.sqlobject.TestSqlObject$Dao/2 (unnamed module @34b7bfc0)
    at java.lang.invoke.MemberName.makeAccessException(java.base@9-ea/MemberName.java:915)
    at java.lang.invoke.MethodHandles$Lookup.checkAccess(java.base@9-ea/MethodHandles.java:1924)
    at java.lang.invoke.MethodHandles$Lookup.checkMethod(java.base@9-ea/MethodHandles.java:1864)
    at java.lang.invoke.MethodHandles$Lookup.getDirectMethodCommon(java.base@9-ea/MethodHandles.java:2013)
    at java.lang.invoke.MethodHandles$Lookup.getDirectMethodNoSecurityManager(java.base@9-ea/MethodHandles.java:2007)
    at java.lang.invoke.MethodHandles$Lookup.unreflectSpecial(java.base@9-ea/MethodHandles.java:1539)
    at org.jdbi.v3.sqlobject.DefaultMethodHandler.invoke(DefaultMethodHandler.java:51)
    ... 38 more

рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рднреА рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рднреА рд▓реЛрдЧ рдЬреЛ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рд╣реИрдХ рдХреЛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JDK рдЯреАрдо рдиреЗ "рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХреЛрдВ" рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред

рдПрдЪрдПрдо, рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

Field field = MethodHandles.Lookup.class.getDeclaredField("IMPL_LOOKUP");
field.setAccessible(true);
MethodHandles.Lookup lookup = (MethodHandles.Lookup) field.get(null);
Class<?> declaringClass = method.getDeclaringClass();
return lookup.unreflectSpecial(method, declaringClass)
                    .bindTo(target)
                    .invokeWithArguments(args);

рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ рдпрд╣ JDK9 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрд╣реЗрдВред рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдУрдкрдирдЬреЗрдбрдХреЗ рджреЗрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ...

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХрдИ рджрд┐рдиреЛрдВ рд╕реЗ рдЖрд░рд╛-рджреЗрд╡ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕ рд╕рдЯреАрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЬреЛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ setAccessible рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдореВрд▓реНрдп рдкрд░ рдПрдХ рдЙрдЧреНрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рдлреБрдЯрдиреЛрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕ рдХрджрдо рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реИрдВред

рдореИрдВ рдЗрд╕реЗ рд░рд┐рд▓реАрдЬ рдмреНрд▓реЙрдХрд░реНрд╕ рд╕реЗ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдлрд┐рдХреНрд╕ рдЬрд▓реНрдж рд╣реА рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ JDK9 рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдВрддрд┐рдо рд╕реБрдзрд╛рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ jigsaw-dev рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ред http://jigsaw-dev.1059479.n5.nabble.com/Invoking-default-methods-from-a-Proxy-s-InvocationHandler-in-JDK9-td5714878.htmlред

рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдирд┐рдХрд▓рддрд╛ рд╣реИред

рдЗрд╕реЗ рдХреЛрд░-рд▓рд┐рдмреНрд╕-рджреЗрд╡ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЯрдХрд░рд╛рдпрд╛ред

рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╣рд╛рд▓ рдХреЗ JDK9 рдмрд┐рд▓реНрдб рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдо рд╕реЗ рдХрдо рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВред

рдореВрд▓ рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ рдмрджрд▓ рджреА рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдХрд░ рд╕рдХреЗ
рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ рдкрд░ рдЕрдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖ред

рдЬрдм JDK9 рд▓реИрдВрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛
рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг JDBI рдЪрд▓ рд░рд╣рд╛ рд╣реИред

1 рдорд╛рд░реНрдЪ, 2017 рдХреЛ рджреЛрдкрд╣рд░ 2:36 рдмрдЬреЗ, "рд╕реНрдЯреАрд╡рди рд╢реНрд▓рд╛рдирд╕реНрдХрд░" рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдЗрд╕реЗ рдХреЛрд░-рд▓рд┐рдмреНрд╕-рджреЗрд╡ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЯрдХрд░рд╛рдпрд╛ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рд╕реВрддреНрд░ рдХреЛ рд▓рд┐рдЦрд╛ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/jdbi/jdbi/issues/497#issuecomment-283478025 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AACW5VBktrJYJatnsABFKay_-Ci5WD_Sks5rheTCgaJpZM4KCb6m
.

рдЖрд╣ рдмрд┐рд▓реНрдХреБрд▓ред рдХреЛрд░-рд▓рд┐рдмреНрд╕-рджреЗрд╡ рд╕реЗ:

рд▓рдХреНрд╖реНрдп рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рд▓реБрдХрдЕрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк MethodHandles.privateLookupIn (JDK 9 рдореЗрдВ рдирдпрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдбреА

рдпрд╣ рд╕реБрдирдХрд░ рддрд╛рдЬрд╝рдЧреА рдЖ рд░рд╣реА рд╣реИ! рдХрдо рд╕реЗ рдХрдо рд╣рдо JDK9 рдореЗрдВ рдЗрд╕ рдЧрдбрд╝рдмрдбрд╝реА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рдп рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдУрдирд░ рдкрд░ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреА рд╣реИ рдЬреЛ рдЬреЗрдбреАрдХреЗ 9 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдХреГрдкрдпрд╛ рдореЗрд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд░реНрдЧ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХреЗред

рдЗрд╕ рдкрд░ рдХреЛрдИ рд╢рдмреНрдж? рдореИрдВ JDK 9 рдХреЗ рд╕рд╛рде JDBI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░ рдкрд╛рдКрдВрдЧрд╛?

рд╣рдо рдЬрд╛рд╡рд╛ 9 рд╕рдорд░реНрдерди рдореЗрдВ рдмрд╣реБрдд рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрднреА рднреА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдЯрдХреНрдХрд░ рджреЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдпрд╣рд╛рдБ рдХреБрдЫ рдирдпрд╛? JDK 10 рдХреБрдЫ рджрд┐рдиреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ...

Jdk9 рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ, рд╕реАрдзреЗ 10 . рдкрд░ рдЬрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреЛрдб рдХреЛ рдмреНрд░рд╛рдВрдЪ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ JDK9 рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдирдП рддрд░реАрдХреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, 8 рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ред рдпрд╣рд╛рдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдкреИрдЪ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд▓реЗрдЧрд╡рд░реНрдХ рдЬрдорд╛ рдХрд░рдирд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ :) рдЕрдиреНрдпрдерд╛ рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред

рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ резреж рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ реп рдореЗрдВ рд╣реЛрдЧрд╛ - рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ резреж рдореЗрдВ рдХреЛрдИ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реИ, рд╣рдо рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ реп рдЯреВрдЯреА рд╣реБрдИ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ ...

рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдПрдХ рд╢рд╛рдЦрд╛ рд╣реИ рдЬрд┐рд╕реЗ рджреЛрд╣рд░реЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрд╣рд▓реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдареАрдХ рд╣реИ, рдореИрдВ рдЙрд╕ рдкрд░ рд╣реИрдХрд┐рдВрдЧ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕реЗ рдЕрдЧрд▓реА рдЬреЗрдбреАрдмреАрдЖрдИ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП--рд╢рд╛рдпрдж v3.2.0

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

stevenschlansker picture stevenschlansker  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

electrum picture electrum  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

goxr3plus picture goxr3plus  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jimmyhmiller picture jimmyhmiller  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

johanneszink picture johanneszink  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ