[JAVA] Hello World avec Web Assembly

Qu'est-ce que Web Assembly?

Une technologie qui vous permet d'exécuter des langages d'assemblage à partir de votre navigateur. Il est utilisé dans le but d'accélérer ou de faire quelque chose que le système de traitement JavaScript ne peut pas faire.

En juin 2015, Mozilla, Google, Microsoft et Apple ont accepté de le développer en tant que format standard.

Les langages pris en charge sont C / C ++, Rust, etc. Récemment, Golang peut également être utilisé.

Puis-je utiliser WebAssembly? <Img width = "1272" alt = "Screenshot 2018-09-28 16.17.10.png " src = "https://qiita-image-store.s3.amazonaws.com/0/265344" /81bce170-2244-092c-e681-864551dedbd5.png ">

Actuellement pris en charge par la plupart des navigateurs autres que IE.

Qu'est-ce qu'un langage d'assemblage?

À titre d'exemple, jetons un coup d'œil à un programme Hello World écrit en C ++ en langage assembleur.

hello.cpp


#include <iostream>
using namespace std;

int main() {
    cout << "Hello World!" << endl;
    return 0;
}

Vous pouvez voir le langage d'assemblage en ajoutant l'option S à g ++.

$ g++ -S hello.cpp

Générera un fichier assembleur appelé hello.s.

Puisque le fichier aura plus de 1000 lignes, je ne mettrai que les 15 premières lignes ici.

	.section	__TEXT,__text,regular,pure_instructions
	.macosx_version_min 10, 13
	.globl	_main                   ## -- Begin function main
	.p2align	4, 0x90
_main:                                  ## @main
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$32, %rsp
	movq	__ZNSt3__14coutE@GOTPCREL(%rip), %rdi
	leaq	L_.str(%rip), %rsi

Hello World on Web Assembly

Voici le problème principal.

Installez Emscripten

Présentation de l'Emscripten le plus populaire.

git clone https://github.com/juj/emsdk.git
cd emsdk

#Installez les derniers outils SDK
./emsdk install latest

#Activer
./emsdk activate latest

#Définir les variables de chemin et d'environnement
source ./emsdk_env.sh

Cela prend beaucoup de temps, alors je bois du thé.

Exécuter

Maintenant que vous avez un environnement de construction, compilez-le et exécutez-le.

hello.c


#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}
$ emcc -0 hello.js -O0 hello.c
$ node hello.js
Hello World!

Créez le fichier de sortie .html

$ emcc -o index.html hello.c

#Configurer un serveur local
## Python3.série x
$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 ...

## Python2.série x
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

Lorsque vous accédez à http: // localhost: 8000 /,

スクリーンショット 2018-09-28 16.49.56.png

Hello World! S'affiche correctement.

À la fin

Cette fois, j'ai essayé Hello World avec Web Assembly.

Si vous en avez envie, essayez un traitement arithmétique plus compliqué.

c'est tout!

Recommended Posts

Hello World avec Web Assembly
Hello World avec AWS Lambda + Java
Java, bonjour le monde!
Java Hello World
Hello World sur Mac VSCode Java
"Hello World" en Java
Apprendre Java (1) - Hello World
Exécutez JSP Hello World avec Tomcat sur Docker
Hello World en Java
Étudier Java-Partie 1-Hello World
Hello World avec Micronaut
[Introduction] Affichez Android Studio Hello World sur l'émulateur
Hello World avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Bonjour tout le monde avec VS Code!
java bonjour le monde, compilez, exécutez
Hello World avec Spring Boot
Les débutants en Java lisent Hello World
Hello World avec SpringBoot / Gradle
Bonjour tout le monde! Avec Asakusa Framework!
Essayez Hello World en utilisant Java brut sur le conteneur Docker
Jusqu'à ce que les débutants d'Android Studio affichent "Hello World" sur HUAWEI nova 2
Spring Boot Hello World dans Eclipse
Hello World pour le plugin Java ImageJ
Jusqu'à "Hello World" avec Spring Boot
Bonjour tout le monde avec Kotlin et JavaFX
Hello World avec Docker et langage C
Bonjour le monde de Java dans Eclipse maintenant
(Intellij) Hello World avec Spring Boot
Hello World avec GlassFish 5.1 + Servlet + JSP
Créez un PDF avec itext7 ~ HelloWorld ~
Java 10 (JDK 10) est sorti le 20 mars 2018, alors essayons Hello World
"Hello world" pour ImageJ avec Eclipse
Hello World avec GWT 2.8.2 et Maven
Version du système d'exploitation Android (7.1.2) et Hello World
Bonjour tout le monde en Java et Gradle
Création d'une série de plugins Elasticsearch (1) Hello World
Hello World avec Eclipse + Spring Boot + Maven
Bonjour tout le monde!
Bonjour tout le monde avec le moteur de modèle Java Thymeleaf
[Entraine toi! ] Affichez Hello World avec Spring Boot
Développement Java avec Codenvy: Hello World! Run
"Hello, World!" Avec Kotlin + CLI en 5 minutes
Introduction à Ratpack (3) - Explication détaillée de Hello World
Bonjour tout le monde avec Kotlin et Tornado FX
Comment Spring Security fonctionne avec Hello World
(IntelliJ + gradle) Hello World avec Spring Boot
Construction d'un environnement Java minimal et Hello World
Hello World, une application d'interface graphique multiplateforme avec Groovy fonctionnant sur la plate-forme Java