Java

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 12837
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Java

Непрочитанное сообщение Olej » 21 ноя 2019, 01:16

По Java здесь уже много разбросанных тем ... там можно почерпнуть ряд деталей (хотя системно Java здесь не рассматривалась):
JDK & OpenJDK - это про установку альтернативных реализаций JDK/JRE
Изменение идентификации браузера - о некоторых деталях сетевых клиентов
код Kotlin & Java - некоторые кодв Java и его последователя Kotlin
Scala - язык Scala, который ещё называют Java++
Всякая мелочёвка:
Java и мультипроцессирование
java.выбор_коллекции
небольшие задачи на Java

Аватара пользователя
Olej
Писатель
Сообщения: 12837
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Java

Непрочитанное сообщение Olej » 21 ноя 2019, 01:27

Olej писал(а):
21 ноя 2019, 01:16
По Java здесь уже много разбросанных тем ... там можно почерпнуть ряд деталей (хотя системно Java здесь не рассматривалась):
Но тему новую стоит создать чтобы не повторяться...

Но выясняются и новые обстоятельства, которые требует возврата к теме Java.
Вот здесь: Изменение идентификации браузера - выясняется (повторять не хочется, см. там), что в разных дистрибутивах Linux (Astar Linux SE) могут быть использованы сборки JDK, которые (при полной синтаксической совместимости) могут вести к разному исполнению Java-кода.

Аватара пользователя
Olej
Писатель
Сообщения: 12837
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Java

Непрочитанное сообщение Olej » 21 ноя 2019, 01:52

Olej писал(а):
21 ноя 2019, 01:27
Вот здесь: Изменение идентификации браузера - выясняется (повторять не хочется, см. там), что в разных дистрибутивах Linux (Astar Linux SE) могут быть использованы сборки JDK, которые (при полной синтаксической совместимости) могут вести к разному исполнению Java-кода.
В ходе тех обсуждений мне не раз укоряли :lol: , что "там автор изначально тестировал приложение *.jar, а у тебя *.class".
Но это технологические различия, и на них полезно бы остановиться ... себе на будущее для справки.
Приложение ua.java, простейшее:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/User-Agent$ cat ua.java 
import java.io.*;
import java.net.*;

public class ua {
   public static String getHTML( String urlToRead ) throws Exception {
      StringBuilder result = new StringBuilder();
      URL url = new URL( urlToRead );
      HttpURLConnection conn = (HttpURLConnection)url.openConnection();
      conn.setRequestMethod( "GET" );
      BufferedReader rd = new BufferedReader( new InputStreamReader( conn.getInputStream() ) );
      String line;
      while( ( line = rd.readLine() ) != null ) {
         result.append( line );
      }
      rd.close();
      return result.toString();
   }

   public static void main( String[] args ) throws Exception {
      System.out.println( getHTML( args[ 0 ] ) );
   }
}
Собираем и исполняем так:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/User-Agent$ javac ua.java

olej@ACER:~/2019_WORK/own.WORK/User-Agent$ ls -l *.class
-rw-r--r-- 1 olej olej 1260 ноя 18 14:15 ua.class

olej@ACER:~/2019_WORK/own.WORK/User-Agent$ java ua http://httpbin.org/user-agent
{  "user-agent": "Java/11.0.5"}
Собираем и исполняем по-другому, в архив *.jar (меня здесь интересовала именно сборка единичного файла без явного создания файла манифеста):

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/User-Agent$ jar --create --file ua.jar --main-class ua  ua.class

olej@ACER:~/2019_WORK/own.WORK/User-Agent$ ls -l *.jar
-rw-r--r-- 1 olej olej 1158 ноя 20 18:44 ua.jar

olej@ACER:~/2019_WORK/own.WORK/User-Agent$ java -jar ua.jar http://httpbin.org/user-agent
{  "user-agent": "Java/11.0.5"}
Сборка в *.jar безусловно интереснее для многофайловых *.java проектов, которые подлежат переносу/тиражированию (на локальном хосте с тем же успехом выполняются и многофайловые *.class проекты).
Вложения
ua.java
(706 байт) 3 скачивания

Аватара пользователя
Olej
Писатель
Сообщения: 12837
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Java

Непрочитанное сообщение Olej » 21 ноя 2019, 01:55

Olej писал(а):
21 ноя 2019, 01:52
Сборка в *.jar безусловно интереснее для многофайловых *.java проектов, которые подлежат переносу/тиражированию (на локальном хосте с тем же успехом выполняются и многофайловые *.class проекты).
По техологии компиляции-сборки можно посмотреть публикацию, вполне достаточно: Компиляция в Java.
18 июля 2019
Ну и конечно постоянно пользуемся справкой:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/User-Agent$ jar --help
Usage: jar [OPTION...] [ [--release VERSION] [-C dir] files] ...
jar creates an archive for classes and resources, and can manipulate or
restore individual classes or resources from an archive.

 Examples:
 # Create an archive called classes.jar with two class files:
 jar --create --file classes.jar Foo.class Bar.class
 # Create an archive using an existing manifest, with all the files in foo/:
 jar --create --file classes.jar --manifest mymanifest -C foo/ .
 # Create a modular jar archive, where the module descriptor is located in
 # classes/module-info.class:
 jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0
     -C foo/ classes resources
 # Update an existing non-modular jar to a modular jar:
 jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0
     -C foo/ module-info.class
 # Create a multi-release jar, placing some files in the META-INF/versions/9 directory:
 jar --create --file mr.jar -C foo classes --release 9 -C foo9 classes

To shorten or simplify the jar command, you can specify arguments in a separate
text file and pass it to the jar command with the at sign (@) as a prefix.

 Examples:
 # Read additional options and list of class files from the file classes.list
 jar --create --file my.jar @classes.list


 Main operation mode:

  -c, --create               Create the archive
  -i, --generate-index=FILE  Generate index information for the specified jar
                             archives
  -t, --list                 List the table of contents for the archive
  -u, --update               Update an existing jar archive
  -x, --extract              Extract named (or all) files from the archive
  -d, --describe-module      Print the module descriptor, or automatic module name

...

Аватара пользователя
Olej
Писатель
Сообщения: 12837
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Java

Непрочитанное сообщение Olej » 23 ноя 2019, 15:19

Разговаривал со своим давним коллегой, который уже много лет живёт и работает в Канаде.
Утверждает примерно следующее:
- что очень спросом пользуются проекты на Java...
- которые выполняются главным образом в Spring...
- а также в том же Spring большой интерес к Scala & Kotlin,
- особенно к новому Kotlin.
Нужно бы к этим словам присмотреться... ;-)

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя