Bahasa pemrograman Haxe modern dikenal di kalangan tertentu, tetapi banyak dari mereka yang membaca materi ini mungkin tidak pernah mendengarnya. Tapi jangan biarkan status ceruknya menipu Anda. Sejak ia pertama kali muncul pada 2005, pengikutnya yang setia, meskipun agak pendiam, telah mengalaminya dalam pertempuran. Ini fitur kombinasi pragmatis dan bijaksana dari kemampuan yang cocok untuk pengembangan dalam bisnis, permainan, dan bahkan untuk tujuan akademik.
Disney, Hasbro dan BBC menggunakan Haxe , jadi mengapa sebagian besar pengembang belum pernah mendengarnya? Mungkin fleksibilitas Haxe berarti bahwa itu tidak dapat disebut fitur pembunuh tunggal.
Atau mungkin alasannya adalah bahwa salah satu penggunaan awal Haxe adalah menggunakannya sebagai sarana untuk bermigrasi dari platform Flash yang sedang sekarat, yang merupakan ceruk yang cukup bagus. Selama beberapa tahun terakhir, pasar game kasual telah mengalami limbo, tetapi sekarang telah diketahui bahwa pada tahun 2020 Flash akan secara resmi
berhenti didukung oleh Adobe dan semua konten Flash di web akan dilupakan.
Insinyur perangkat lunak bisnis, pengembang web, dan banyak pengembang game, mendengar kata "Flash" dapat langsung kehilangan minat pada subjek. Sikap ini, misalnya, adalah alasan munculnya
HaxeDevelop - sebuah IDE untuk Haxe, yang pada dasarnya adalah
FlashDevelop , tetapi khusus untuk pengembangan untuk Haxe dan dari komponen distribusinya untuk pengembangan untuk ActionScript telah dihapus.
Menyingkirkan asosiasi seperti itu bahwa Haxe adalah tempat perlindungan mantan pengembang Flash masih cukup sulit, terutama ketika mereka (asosiasi semacam itu) tetap relevan. Misalnya, FlowPlay, yang permainan sosialnya memiliki 75 juta pengguna, memilih Haxe, bukan Unity atau JavaScript murni, untuk menerjemahkan proyeknya (dengan basis kode 1,4 juta baris) dari Flash ke HTML5 (informasi lebih lanjut tentang ini tersedia
dalam materi ini ).
Mungkin itu sebabnya sulit untuk memilih kasus sukses menggunakan Haxe, dan pada saat yang sama menarik minat pengembang non-game. Tetapi mari kita masih melakukan sedikit riset.
Jadi apa tentang Haxe?
Secara umum,
menggunakan bahasa Haxe berarti Anda dapat menggunakan kembali kode (baik) . Maksud saya, kode Haxe dapat digunakan kembali pada banyak platform, dapat diintegrasikan dengan kode Haxe yang ada dan bahasa lain, dan, yah, bahasa Haxe menyediakan banyak paradigma yang telah terbukti seperti jenis keamanan.
Melanjutkan topik universalitas, kami daftar kategori utama skenario penggunaan Haxe (kecuali untuk migrasi dari Flash, tentu saja).
Pengembangan aplikasi atau game lintas platform dari awal. Menggunakan kode Haxe, Anda dapat bekerja dengan platform desktop, seluler, dan web. Tidak ada yang baru dalam bahasa pemrograman lintas platform, dan selain Haxe, ada solusi khusus lainnya untuk
desktop dan
aplikasi dan game lintas platform. Tetapi Haxe dalam hal ini berbeda karena satu kode tidak hanya akan bekerja pada platform yang berbeda, tetapi dalam paradigma yang berbeda, misalnya, dalam bentuk aplikasi HTML5 dan file asli yang dapat dieksekusi.
Satu bahasa "untuk memerintah semua." Saya minta maaf karena merujuk ke Tolkien, tetapi sama seperti Node.js menyatakan era menggunakan bahasa yang sama untuk bagian klien dan server situs web, Haxe dapat digunakan untuk kedua komponen aplikasi klien-server (sementara klien dan server dapat berjalan pada platform yang berbeda).
Misalnya, aplikasi web
FontStruct menggunakan Haxe untuk membuat grafik baik di sisi klien (di kanvas HTML5) dan di sisi server (menggunakan Java2D). Tetapi, seperti yang telah disebutkan, tidak perlu mengikuti jalur ini -
Haxe tidak membatasi kemampuan Anda dan memungkinkan Anda untuk bekerja bersama dengan kode yang ada yang ditulis dalam bahasa lain. Pendekatan ini sangat menyederhanakan menjaga konsistensi logika dan bahkan rendering grafik dalam semua konteks, platform, dan bahasa target.
Pengabaian JavaScript demi keamanan jenis. Tunggu sebentar, bukankah itu TypeScript? Ya, jika Anda ingin membatasi diri hanya untuk output JavaScript. Haxe, pada gilirannya, juga dapat dikompilasi menjadi kode dalam Java, C ++, C #, Python, Lua,
dan bahasa lainnya .
Pada saat yang sama, bahasa Haxe sendiri cukup sederhana untuk dipelajari bagi mereka yang sudah terbiasa dengan dasar-dasar JavaScript, sintaksisnya tidak mengharuskan programmer untuk mengubah paradigma berpikir, seperti, misalnya, dalam kasus Rebol. Andy Lee (salah satu pengembang utama Haxe) menulis
perbandingan terperinci dari TypeScript dan Haxe , yang tetap relevan hingga saat ini, meskipun kedua bahasa melanjutkan pengembangan lebih lanjut.
Proses kompilasi dan pengujian yang cukup cepat. Baru-baru ini ditambahkan ke ekosistem Haxe, mesin virtual cross-platform HashLink memungkinkan Anda untuk menyeimbangkan antara waktu kompilasi (kompilasi di bawah HashLink jauh lebih cepat daripada kompilasi di bawah C ++) dan kecepatan eksekusi kode yang cukup untuk area seperti membuat game 3D (sebelumnya untuk keperluan ini dapat memungkinkan menggunakan mesin virtual Neko, yang, bagaimanapun, secara signifikan lebih rendah daripada HashLink dalam kecepatan). Tetapi bahkan dalam bidang pengembangan web,
Haxe dapat mengungguli TypeScript dalam kecepatan kompilasi dan kecepatan eksekusi kode yang dihasilkan .
Perbatasan yang mengasyikkan. Kode sumber Haxe terbuka, konstruksi bahasa baru terus ditambahkan ke dalamnya, dan memiliki komunitas yang aktif. Dan rahasia terbesarnya adalah
sistem makro yang dijalankan pada waktu kompilasi dan memungkinkan meta-pemrograman seperti yang diinginkan jiwa (saya akan memberikan beberapa contoh perpustakaan menggunakan makro di bawah).
Siapa yang menggunakan Haxe?
Tentu saja, pengembang game:
Madden NFL Mobile ,
Evoland II ,
Double Kick Heroes ... ini dan ratusan game lainnya dikembangkan menggunakan Haxe. Tapi Haxe juga digunakan di luar dunia game:
- Kembali pada tahun 2014, penggunaan Haxe memungkinkan TiVo untuk meningkatkan kinerja set-top box TiVo lebih dari 30% .
- Massive Interactive, yang pelanggannya DAZN dan Telecine, berhasil menggunakan Haxe untuk mengembangkan perangkat lunak untuk sistem Smart TV. Berdasarkan pengalamannya dengan proyek web besar, Philip Elsass (Massive Interactive UI Architect), dalam salah satu laporannya, mencatat bahwa Haxe biasanya lebih mudah digunakan daripada TypeScript dan juga diterjemahkan ke dalam JavaScript lebih cepat dengan urutan besarnya.
- Synolia menggunakan Haxe untuk alat daringnya Heidi , yang digunakan oleh merek-merek besar Prancis Carrefour dan La Fnac, serta Nickelodeon. Toolkit Haxe memungkinkan Synolia untuk bermigrasi dari Flash ke HTML5, dan juga memberikan peluang bisnis baru untuk bisnis seluler. Memilih Haxe memungkinkan kami untuk menggunakan kembali kode umum di berbagai lapisan dan layanan Heidi.
- Pada 2017, Docler Holding menjadi mitra strategis Yayasan Haxe .
Apa itu ekosistem Haxe?
Ketika datang ke game dan Haxe, pilihan perpustakaan dan kerangka kerja open source cukup luas. Pengguna Haxe, apakah mereka tim indie independen atau studio sukses dengan klien internasional, secara aktif berbagi kode mereka:
- Flambe telah digunakan untuk mengembangkan game HTML5 oleh merek-merek seperti Disney, Coca-Cola, dan Toyota.
- Heaps adalah kerangka kerja game 3D / 2D yang menopang game indie yang sukses seperti Northgard dan Dead Cells .
- Perpustakaan pengembangan cepat awe6 mungkin adalah permata tersembunyi bahkan untuk komunitas Haxe.
- Kha adalah kerangka kerja multimedia ultra-portabel dengan kemampuan untuk membangun proyek tidak hanya pada desktop dan OS mobile dan HTML5, tetapi juga pada XBox One, Nintendo Switch dan Playstation 4. Lebih dari 20 mesin game dibuat berdasarkannya, yang paling menarik di antaranya adalah Gudang Senjata - 3D -engine dengan integrasi penuh dengan Blender .
- HaxeFlixel , yang meniru model mesin Flixel, adalah pilihan populer untuk membuat game kecil, misalnya, untuk Defender's Quest .
- Starling, awalnya kerangka kerja ActionScript yang digunakan untuk port Angry Birds untuk Facebook, sekarang juga memiliki port di Haxe .
- OpenFL , yang mengimplementasikan Flash API, juga memungkinkan Anda membuat aplikasi untuk konsol (PlayStation 4, PlayStation Vita, XBox One dan Nintendo Switch), OS desktop dan seluler, HTML5. HaxeFlixel dan Starling Port berjalan di atas OpenFL. Contoh permainan yang dikembangkan langsung di OpenFL adalah Makalah pemenang penghargaan , Please .
- Native Media Engine (NME), dari mana OpenFL terpecah beberapa tahun yang lalu, terus didukung dan pembaruan sedang dirilis untuk itu.
- HaxePunk (diturunkan dari mesin Flash lain - FlashPunk) - mungkin Anda bisa melihatnya menyebutkannya di salah satu rilis Radar Github Release .
- Nape adalah mesin 2D fisika yang sangat dioptimalkan, bagus untuk permainan dan simulasi dengan fisika kompleks.
Tentu saja, membuat game adalah aplikasi Haxe yang paling menonjol. Tetapi ekosistem Haxe juga memiliki perpustakaan dan alat untuk membangun aplikasi bisnis dan perusahaan, misalnya:
- hexMachina adalah kerangka kerja pembuatan aplikasi modular yang mendukung penggunaan bahasa spesifik domain (DSL) dan arsitektur model-view-controller (MVC), serta banyak fungsi lainnya. Dibuat dan digunakan oleh Docler Holding.
- HaxeUI adalah mesin markup UI, sedang aktif berkembang dan memiliki dukungan perusahaan. Contoh penggunaannya adalah produk seperti 3DVista dan Kaizen untuk Pharma . HaxeUI menarik karena terdiri dari modul kernel dan modul terpisah yang mengimplementasikan rendering UI menggunakan berbagai cara: komponen HTML, wxWidgets, Windows Forms, elemen Android UI asli, dll.
- Keluarga perpustakaan menyediakan ekstensi bahasa universal untuk Haxe, perpustakaan Lodash dapat disebut sebagai mitra dari dunia JavaScript.
- Berbicara tentang proyek Haxe yang dikompilasi dengan JavaScript dan JavaScript, penyebutan harus dibuat dari alat Haxe Modular , yang membantu Telecine dan FlowPlay meningkatkan proyek-proyek besar mereka dan menyediakan pemuatan sisi klien yang cepat.
- Ekosistem Haxe juga bertujuan untuk mendorong sinergi dengan teknologi modern. Sebagai contoh gerakan ke arah ini, kita bisa memanggil perpustakaan GraphQL .
- Akhirnya, koleksi perpustakaan Tinkerbell , menggunakan sistem makro, menyediakan alat untuk semua jenis tugas: kerangka kerja untuk perutean web, pengujian unit dan penyematan SQL, serta pustaka untuk hampir semua hal: mulai dari template CSS dan penguraian hingga async / menunggu dan pemrosesan reaktif menyatakan dengan kurva belajar yang lebih halus.
Hanya proyek paling menarik yang dibuat oleh pengguna Haxe yang terdaftar di sini.
Daftar lengkap perpustakaan diurutkan berdasarkan popularitas (ada juga kemampuan untuk mengurutkan perpustakaan berdasarkan tag) tersedia di situs web resmi. Tetapi perlu juga disebutkan beberapa proyek yang didukung oleh Yayasan Haxe sendiri:
- Untuk DevOps, gambar Haxe resmi untuk Docker mungkin tampak menarik.
- Perpustakaan h3compat menyediakan kompatibilitas mundur sebagian antara Haxe 4 dan Haxe 3 dan dirancang untuk membantu pengguna saat memperbarui proyek agar dapat bekerja dengan versi bahasa yang baru.
Kedengarannya bagus, tapi apa yang diperlukan untuk memulai pengembangan di Haxe?
Mulai cepat dengan Haxe
Terlepas dari apakah Anda bekerja di Windows, MacOS atau Linux, hal pertama yang harus dilakukan adalah
mengunduh installer Haxe , yang meliputi:
- Kompiler Haxe, yang dapat dimulai dengan perintah
haxe
dari terminal atau baris perintah. - Perpustakaan Standar Haxe , yang menyediakan fungsi tingkat rendah dan struktur data tujuan umum. Misalnya, kelas untuk pemrosesan arsip XML dan ZIP, akses ke MySQL.
- Pengelola paket Haxelib yang memungkinkan Anda untuk menginstal perpustakaan baru (baik dari repositori resmi, dan dari Git atau Mercurial). Diluncurkan oleh perintah
haxelib
(Anda mungkin juga tertarik dengan lix , manajer paket yang lebih canggih dibandingkan dengan Haxelib). - Neko adalah mesin virtual yang dapat berguna dalam proyek debugging berkat kompilasi yang cepat.
Selain itu, ada cara lain untuk menginstal Haxe di sistem Anda, misalnya
menggunakan npm , Homebrew, atau Chocolatey.
Setelah instalasi, Haxe dapat digunakan langsung dari baris perintah, tetapi lebih baik, tentu saja, untuk melakukan ini menggunakan IDE. FlashDevelop / HaxeDevelop sebagian besar masih didukung hanya di bawah Windows. Sebagian besar opsi lain yang tersedia adalah cross-platform (Win / Mac / Linux):
- Plugin Haxe untuk VSCode didukung secara aktif.
- Ada juga plugin Haxe untuk IntelliJ IDEA .
- Kha (kerangka kerja yang disebutkan sebelumnya untuk membuat game) memiliki lingkungan pengembangan sendiri - Kode Studio (Win / Mac / Linux). IDE ini adalah fork dari VSCode dengan fitur tambahan untuk proyek debugging.
- Untuk Sublime Text dan Atom, serta banyak editor lainnya , Anda juga dapat menemukan plugin Haxe yang sesuai, meskipun beberapa di antaranya hanya berfungsi pada platform tertentu.
Dalam tutorial singkat ini kita akan menggunakan VSCode. Cara termudah adalah menginstal seluruh paket plug-in untuk dukungan Haxe segera dengan perintah
ext install haxe-extension-pack
di panel akses cepat VSCode (disebut dengan
Ctrl+P
), tetapi jika Anda minimalis, Anda dapat membatasi diri pada plug-in paling dasar -
ext install vshaxe
(komponen lain Anda selalu dapat menginstal ulang nanti).
Membuat Proyek Haxe
Mengelola proses kompilasi kode Haxe untuk platform berbeda lebih mudah dengan bantuan file sistem build. Namun, untuk permulaan, kita hanya perlu satu file dengan kode Haxe dengan ekstensi
.hx
.
Mengenai kode, mari kita ambil contoh โHasilkan Arrayโ dari
try.haxe.org (kotak pasir online tempat Anda dapat dengan cepat memeriksa bagaimana kode tertentu akan bekerja) dan menyimpannya dalam file bernama
Test.hx
:
class Test { static function main() { var a = [for (i in 0...10) i]; trace(a);
Sekarang kita dapat menjalankan compiler Haxe dalam mode interpretasi (yaitu, tanpa menghasilkan kode untuk platform apa pun) dan melihat hasil panggilan ke fungsi
trace()
:
$ haxe -main Test --interp Test.hx:4: [0,1,2,3,4,5,6,7,8,9] Test.hx:8: [0,1,2,3,4,5,6,7,8,9]
Bagus, itu berhasil!
Transaksasi Haxe dalam JavaScript
Misalkan Anda ingin membagikan kode yang dibahas dalam contoh dengan seluruh dunia, buat kode JavaScript darinya, dan gunakan kode yang dihasilkan di halaman web Anda. Di Haxe, ini dilakukan dengan satu perintah:
$ haxe -main Test -js haxe-test.js
Jika Anda telah menginstal Node.js, maka Anda dapat memeriksa operasi kode JavaScript yang dihasilkan dari baris perintah:
$ node my-test.js [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
Atau Anda dapat menghubungkan file
my-test.js
selesai ke halaman web, dan kemudian ketika Anda mengunduhnya, kita akan melihat hasil yang sama, tetapi sudah ada di konsol pengembang yang terpasang di browser.
Kompilasi dan kompilasi menjadi file yang dapat dieksekusi
Misalkan Anda juga membutuhkan biner yang dapat dieksekusi untuk sistem yang Anda jalankan. Untuk melakukan ini, kita perlu mengubah kode Haxe dalam C ++, dan kemudian mengkompilasi file
.cpp
dihasilkan ke dalam file yang dapat dieksekusi (asalkan Anda memiliki kompilator yang diinstal, pada Windows paling mudah untuk menginstal Microsoft Visual Studio untuk ini). Untuk melakukan tugas-tugas ini, kita memerlukan pustaka
hxcpp
, yang kita instal dengan perintah:
$ haxelib install hxcpp
Dengan perpustakaan ini, kode dikompilasi dan dikompilasi hanya dengan satu perintah:
$ haxe -main Test -cpp bin
Setelah itu file eksekusi kami dapat diluncurkan:
$ bin/Test Test.hx:4: [0,1,2,3,4,5,6,7,8,9] Test.hx:8: [0,1,2,3,4,5,6,7,8,9]
(pada Windows, perintah untuk menjalankan akan sedikit berbeda
bin\Test.exe
).
Membuat File Build Haxe (.hxml)
Meskipun proyek Haxe membangun file memiliki ekstensi
.hxml
, mereka bukan file XML (tidak seperti file
.hxproj
digunakan oleh HaxeDevelop dan FlashDevelop, tetapi kami tidak akan membicarakannya). Inilah yang akan terlihat seperti file
build-all.hxml
untuk melakukan transpilasi:
-main Test # Haxe, Test (, )
--each # , ,
-js haxe-test.js # JS
--next # ,
-cpp bin # , ( ) - C++
Perhatikan perbedaan dalam awalan:
-main
,
-js
dan
-cpp
- masing-masing parameter ini dilewatkan ke haxe secara langsung, dan
--each
dan
--next
(dengan dua tanda hubung) adalah parameter tingkat meta, mereka memberi tahu kompiler apa yang harus dilakukan dengan parameter lainnya.
Sekarang, untuk membangun program dalam JavaScript dan file yang dapat dieksekusi, cukup dengan menjalankan perintah
haxe build-all.hxml
.
Jika Anda ingin menerjemahkan kode dalam JavaScript dan segera menjalankan hasilnya menggunakan Node, maka Anda dapat menjalankan perintah
haxe run-js.hxml
, isi file
run-js.hxml
akan terlihat seperti ini:
-main Test -js haxe-test.js -cmd node haxe-test.js
Demikian pula, file "build and run" untuk file yang dapat dieksekusi akan terlihat seperti ini (untuk Windows, Anda perlu perubahan kecil, yang telah kami sebutkan):
-main Test -cpp bin -cmd bin/Test
Bagaimana dengan VSCode? Semuanya sederhana di sini: ekstensi yang kami instal untuk VSCode akan secara otomatis mengambil file-file hxml dan menghasilkan tugas yang sesuai untuk membangun proyek (tanpa menggunakan
tasks.json
).
Haxe 4
Dalam proses mengkonfigurasi Haxe, Anda mungkin telah memperhatikan bahwa halaman unduhan memiliki tautan ke versi 3.x dan 4.x.
Versi terbaru (keempat) dari kompiler Haxe menghadirkan banyak fitur baru. Salah satu fungsi ini adalah bukti dari kemungkinan luas sistem makro, memungkinkan untuk melengkapi bahasa dengan desain baru: Haxe tidak memiliki dukungan untuk fungsi lambda pendek sebelumnya, sehingga
perpustakaan slambda muncul , yang mengimplementasikan dukungan mereka menggunakan sistem makro. Dimulai dengan versi keempat, dukungan mereka dibangun ke kompiler, dan kebutuhan untuk menggunakan perpustakaan ini telah menghilang.
Apa lagi yang baru di Haxe 4?Faktanya, tidak ada begitu banyak perubahan besar. Sebaliknya, Haxe 4 membawa banyak perbaikan kecil. Bagaimanapun, Haxe adalah teknologi yang cukup matang yang dikembangkan oleh tim kecil dan bertujuan, dan menemukan proyek yang mirip dengan Haxe cukup sulit.
Banyak fitur Haxe yang paling menarik bukanlah hal baru. Sebagai contoh, saya sebutkan sebelumnya bahwa menggunakan mesin virtual Neko dan HashLink memungkinkan proses pengembangan yang cepat. Tapi sejak 2016, server kompilasi telah muncul di kompiler, berkat proyek yang dikompilasi ulang (bukan untuk mesin virtual) sekarang jauh lebih cepat (caching dalam RAM digunakan), di samping itu, server kompilasi dapat digunakan oleh IDE untuk secara otomatis menyelesaikan kode (misalnya, plugin berfungsi di bawah VSCode).
Namun, khususnya, perubahan berikut akan muncul di Haxe 4:
Materi Pembelajaran Haxe
Selain dokumentasi tentang
API dari perpustakaan standar dan
sintaksis bahasa di situs web Haxe,
materi yang dirancang untuk pemula juga tersedia , selain itu, saya tidak bisa tidak menyebutkan
situs yang didedikasikan untuk mengembangkan Haxe untuk web .
Jika Anda lebih suka belajar dari materi video, maka bagi Anda tersedia
penampilan video dari Haxe Summit US 2018, yang diadakan di Seattle, serta rekaman dari konferensi lain.
Tetapi terkadang panduan untuk topik tertentu mungkin berguna bagi Anda. Misalnya,
tentang membuat game dengan gaya perayap bawah tanah di HaxeFlixel . HaxeFlixel juga memiliki serangkaian bahan yang menjelaskan dasar-dasar bekerja dengan mesin. Jika Anda tertarik dengan 3D, maka di sini Anda dapat menawarkan
panduan tentang cara memulai dengan Armory .
Atau mungkin Anda hanya perlu
panduan untuk pemrosesan XML cepat - ini adalah salah satu artikel yang sudah berusia beberapa tahun, tetapi masih relevan. Terlepas dari kenyataan bahwa Haxe terus berkembang, banyak dari dasar-dasar pengembangan di dalamnya tetap tidak berubah, sehingga materi pelatihan lama tidak selalu berarti sudah usang (bahan pada perpustakaan tertentu, bukan inti Haxe, biasanya menjadi usang).
Seperti yang Anda lihat, Haxe dapat digunakan di area yang berbeda (dan mungkin Haxe akan membawa Anda ke area baru). Saya harap Anda menikmati pengantar ini ke dunia Haxe dan berharap untuk mendengar tentang bagaimana Anda menggunakan Haxe!