Back to The tech awesomeness
Table of contents
Java chapters

The article for today.


А, Б, Тсе--, Тсе++, Д, І, Ф, Г, Ч, Й, Джей.

Що я помітив коли спостерігав за мовами программування, так це те, що деякі з них самокомпільовані.
Що стосується Джава, то це не зовсім так. 
В одному з як мінімум трьох компонентів які має Джава, а саме ДжДіКєй(Джава Набір Розробки),
а саме ОпенДжДіКєй, код складається 
станом на 2020-07-03 з
Java 80.0%
C++ 13.4%
C 4.9%
Objective-C 0.4%
HTML 0.4%
XSLT 0.3%
Other 0.6%
https://github.com/openjdk/jdk

Тобто не маючи Сі і Сі++ і Обджектів-Сі компіляторів, ОпенДжДіКєй для Джава непобудовна кимось чи чимось.
Маючи Сі і Сі++ і Обджектів-Сі компілятори ОпенДжДіКєй для Джава побудовна з залежністю від них.

Не спострігаючи навіть за кодами ДжРеІ(Джава Обробки Середовище) і ДжВЕм(Джава Віртуальна Машина).

Тобто ця частина Джава або не самокомпільована або самокомпільована з залежністю від Сі і Сі++ і Обджектів-Сі компіляторів.

Не спостерігаючи навіть за залежністю від потрібних бібліотек можливо на базі Джава для ЕйЧТіЕмЕль, ІксЕсЕльТі і інших компонентів.

Наприклад якщо я обгорну код Джава ОпенДжДіКєй в необхідну структуру для maven мавен, для ant ант, 
і навіть додам необхідних бібліотек для ЕйЧТіЕмЕль, ІксЕсЕльТі і інших компонентів
він не буде самокомпільованим без залежності і наявності Сі і Сі++ і Обджектів-Сі встановлених компіляторів.

І це лише для однієї частини Джава для створення середовища для побудови і для завантаження програм Джава.

Якщо ж я вилучу ті частини коду з компіляції які залежні від наявності Сі і Сі++ і Обджектів-Сі встановлених компіляторів
в такому випадку ця частина Джава буде самокомпільованою.
Наприклад, src/hotspot сртсе/хотспот або src/jdk.hotspot.agent сртсе/хотспот/дждікєй.хотспот.аджент.

В переліку bootstrapping (compilers) бутстрапових компіляторів чи компіляторів розкрутки 
компілятор Джава як мови програмування є в наявності.
https://uk.wikipedia.org/wiki/Розкрутка_компілятора

Оновлення від 2020-07-29.


клас Мова {
    Абетка абетка;
}

клас МоваПрограмування розширює Мова {
    //уточнити яка абетка наприклад у Джава Java
    /*
    HashSet<String> javaKeywords = new HashSet<String>(Arrays.asList(
"abstract", "continue", "for",  "new",  "switch",
"assert",/* *** */  "default"   ,"goto", /* * */    "package    ", "synchronized",
"boolean    ", "do",     "if",  "private",  "this",
"break",    "double",   "implements",   "protected",    "throw",
"byte", "else", "import",   "public",   "throws",
"case", "enum", /* **** */  "instanceof",   "return",   "transient",
"catch",    "extends",  "int",  "short",    "try",
"char", "final",    "interface",    "static",   "void",
"class",    "finally",  "long", "strictfp", /* ** */    "volatile",
"const", /* * */    "float",    "native",   "super",    "while"
                //"MySQL", "SQL", "Android", "ORACLE", "PostgreSQL", "DB2", "JAVA"
        ));
        
        HashSet<String> letters = new HashSet<>();
        for (String javaKeyword: javaKeywords) {
            // using cycle for loop
            for (int i = 0; i < javaKeyword.length(); i++) {
                    letters.add("" + javaKeyword.charAt(i));
            }
        }
        
        for (String letter: letters) {
            System.out.println(letter);
        }
    */

    Набір ключовіСлова; //http://thetechawesomeness.ideasmatter.info/pispjjslk.html
}

  /--------------------------\
  |                          |
  |                          |
  |   Мова програмування     |
  |                          |
  |                          |
  |                          |
  |   /-------------\        |
  \---|ключові слова|--------/
  /   \-------------/        \
  |                          |
  |        Мова              |
  |                          |
  |       /--------\         |
  |       |абетка  |         |
  |       \--------/         |
  |                          |
  \--------------------------/

Мої вправні навчальні результати для самокомпільованих мов програмування.

Стаття сьогодні.

What I have noticed when observed the programming languages, is that, some of them are self compilable.

What about Java, it is not that quite so.

In one from at least three components which Java has, namely JDK(Java Development Kit),

namely OpenJDK, the code consists of

as of 2020-07-03 from

Java 80.0%

C++ 13.4%

C 4.9%

Objective-C 0.4%

HTML 0.4%

XSLT 0.3%

Other 0.6%

https://github.com/openjdk/jdk

While there are no C and C++ and Objetive-C compilators at the machine, OpenJDK for Java is not compilable by someone or by some service.

While there are C and C++ and Objetive-C compilators OpenJDK for Java is compilable with a dependency with them.

While not observing even the codes of JRE(Java Runtime Environment) and JVM(Java Virtual Machine).

So as this part of Java is not self compilable or self compilable with a dependency with C and C++ and Objetive-C compilators.

While not observing even the dependencies from necessary libraries possibly with Java basis for HTML, XSLT and other components.

For example, if I wrap the Java OpenJDK code into necessary structure for maven, for ant,

and even add the necessary libraries for HTML, XSLT and other components

it will not be self compilable with no dependency and availability of installable C and C++ and Objetive-C compilators.

And this is only for one part of Java for creating the environment for compiling and running Java programs.

If I extract those parts of code from the compilation which have dependency from availability of installable C and C++ and Objetive-C compilators or does not add HTML, XSLT and other components

in such case this part of Java will be self compilable

.

For example, src/hotspot, src/jdk.hotspot.agent.

Among bootstrapping compilers the Java compiler as of for its programming language is available in the list.

https://en.wikipedia.org/wiki/Bootstrapping_(compilers)

The update from 2020-07-29.


class Language {
    Alphabet alphabet;
}

class ProgrammingLanguage extends Language {
    //to specify which alphabet for example in Java
    /*
    HashSet<String> javaKeywords = new HashSet<String>(Arrays.asList(
"abstract", "continue", "for",  "new",  "switch",
"assert",/* *** */  "default"   ,"goto", /* * */    "package    ", "synchronized",
"boolean    ", "do",     "if",  "private",  "this",
"break",    "double",   "implements",   "protected",    "throw",
"byte", "else", "import",   "public",   "throws",
"case", "enum", /* **** */  "instanceof",   "return",   "transient",
"catch",    "extends",  "int",  "short",    "try",
"char", "final",    "interface",    "static",   "void",
"class",    "finally",  "long", "strictfp", /* ** */    "volatile",
"const", /* * */    "float",    "native",   "super",    "while"
                //"MySQL", "SQL", "Android", "ORACLE", "PostgreSQL", "DB2", "JAVA"
        ));
        
        HashSet<String> letters = new HashSet<>();
        for (String javaKeyword: javaKeywords) {
            // using cycle for loop
            for (int i = 0; i < javaKeyword.length(); i++) {
                    letters.add("" + javaKeyword.charAt(i));
            }
        }
        
        for (String letter: letters) {
            System.out.println(letter);
        }
    */

    Set keywords; //http://thetechawesomeness.ideasmatter.info/pispjjslk.html
}

  /--------------------------\
  |                          |
  |                          |
  |   ProgrammingLanguage    |
  |                          |
  |                          |
  |                          |
  |        /--------\        |
  \--------|keywords|--------/
  /        \--------/        \
  |                          |
  |        Language          |
  |                          |
  |       /--------\         |
  |       |alphabet|         |
  |       \--------/         |
  |                          |
  \--------------------------/

Оновлення від 2021-10-24.

Update as of 2021-10-24.

Якщо преференцією є використання лише джейсон;json як формата, то за додаткових кроків використувуючи наприклад, як перші знайдені https://jsonformatter.org/json-to-xml як послуги або альтернативної та curl або альтернативи та Selenium як для автоматизації або альтернативи або https://github.com/lukas-krecan/json2xml як залежності або альтернативи можливо створити попередньо потрібний файл в цьому форматі преференції і тим додатковим кроком ззовні перетворювати його до того формату якого саме вимагає система, наприклад в іксемель xml формат якщо вимагається лише він. Це лише у одному напрямку для 2 форматів, але можливо існують інщі і для інших форматів в одному напрямку або можливо існують і одразу в двох або багатьох напрямках для багатьох форматів, які я не знайшов.

Тож файл у форматі якого вимагає така система в цей подібний спосіб за преференцію після його запуску попередньо автоматично створюємий і після цього заміняємий саме перед використанням такої системи.