Groovy adalah bahasa pemrograman dinamis untuk JVM yang menggabungkan kelonggaran penulisan skrip dengan akses penuh ke seluruh ekosistem Java. Jalur ini mengajarkan Apache Groovy 5.1 secara berurutan, mulai dari sintaks dasar dan GDK, koleksi dan closure, metaprogramming, hingga DSL, pengujian dengan Spock, serta Groovy sisi server. Prasyaratnya berupa JDK 11+ dan terminal, sedangkan pengalaman dasar Java membantu karena setiap kelas JDK dapat dipakai langsung dari kode Groovy.
Groovy
Jalur Apache Groovy 5.1 bagi insinyur praktis: dari skrip dinamis dan closure hingga MOP, kompilasi statis, DSL, serta ekosistem Gradle, Jenkins, dan Spock.
0/0 selesai
Modul pembuka: posisi Groovy di JVM, penyiapan lingkungan, dan perangkat interaktifnya.
- Apa itu Groovy?Mengenal Groovy sebagai bahasa dinamis di JVM dengan interoperabilitas Java yang mulus.
- PenyiapanMemasang JDK 11+ dan Groovy 5.1 melalui SDKMAN, dengan catatan Groovy 6.0 dan fallback 4.0.
- Shell dan konsolMenggunakan groovysh, groovyConsole, dan menjalankan skrip Groovy dari baris perintah.
Fondasi sintaks Groovy: skrip, GDK, GString, serta range dan alur kendali.
- Skrip dan pengetikan opsionalMenulis skrip dengan def, variabel lokal tanpa tipe, serta titik koma dan return yang opsional.
- Metode ekstensi GDKMemanfaatkan lebih dari 2000 metode ekstensi GDK yang ditambahkan pada kelas-kelas JDK.
- GStringInterpolasi GString beserta varian triple-quoted, slashy string, dan dollar-slashy string.
- Range dan alur kendaliMenggunakan range, perulangan each dan times, serta switch yang berperan sebagai ekspresi.
Koleksi Groovy dan closure secara menyeluruh, dari literal hingga delegasi dan currying.
- List, map, dan rangeSintaks literal koleksi, subscripting, dan operator spread pada list, map, dan range.
- Pipeline koleksiMenyusun pipeline data dengan findAll, collect, groupBy, inject, dan sort.
- Anatomi closureParameter closure, it implisit, varargs, dan scope yang ditangkap oleh closure.
- Delegasi dalam praktikHubungan owner, delegate, dan resolveStrategy yang menjadi dasar kerja DSL Groovy.
- Currying dan komposisiMembangun fungsi parsial dengan curry, rcurry, ncurry, serta rantai andThen.
POGO, trait, metaprogramming runtime melalui MOP, hingga kompilasi statis.
- POGO dan traitKonvensi properti POGO, komposisi ulang dengan trait, dan metode operator.
- MOPHook metaprogramming runtime: methodMissing, getProperty, dan invokeMethod.
- ExpandoMetaClassMenambah dan mengganti metode saat runtime menggunakan ExpandoMetaClass.
- Kompilasi statisMengetatkan kode dengan @TypeChecked dan @CompileStatic serta flow typing.
Transformasi AST yang menghapus boilerplate: @Canonical, @Immutable, @Delegate, @Lazy, @Singleton, dan @Log.
- Keluarga @CanonicalSatu anotasi @Canonical menghasilkan constructor, equals, hashCode, dan toString.
- @ImmutableObjek nilai immutable dengan @Immutable, termasuk dukungan copyWith.
- @Delegate dan @LazyKomposisi melalui @Delegate dan field termemoisasi dengan @Lazy tanpa boilerplate.
- @Singleton dan @LogPola satu instans dan anotasi logging @Log dalam pekerjaan sehari-hari.
IO berkas GDK, pemrosesan XML dan JSON, serta command chain yang membangun DSL.
- IO berkas ala GDKMembaca dan menulis berkas dengan eachLine, withReader, traverse, dan pengelolaan resource otomatis.
- Pemrosesan XMLMengurai XML dengan XmlSlurper dan menghasilkan XML dengan MarkupBuilder.
- Bolak-balik JSONMengurai JSON dengan JsonSlurper dan membangunnya kembali dengan JsonBuilder.
- Command chain dan builderRantai metode tanpa titik dan builder yang memungkinkan DSL yang mudah dibaca.
Grape, DSL Gradle, pipeline Jenkins, dan CLI picocli sebagai tempat kerja nyata Groovy.
- Grape dan @GrabSkrip yang mengunduh dependensinya sendiri dari Maven Central melalui @Grab.
- Skrip build GradleTask, dependensi, dan task kustom dalam DSL Groovy Gradle, dengan catatan Kotlin DSL.
- Pipeline JenkinsGroovy dalam pipeline deklaratif dan scripted Jenkins pada praktik CI.
- CLI picocliAplikasi baris perintah berbasis anotasi picocli dengan pelengkapan otomatis.
Spock dari anatomi spesifikasi, tabel data, mock dan stub, hingga integrasi build.
- Anatomi spesifikasiStruktur spesifikasi Spock dengan blok given-when-then di atas extends Specification.
- Tabel dataBlok where dan tabel data yang menggerakkan banyak kasus dalam satu metode uji.
- Mock dan stubVerifikasi interaksi dengan Mock dan Stub beserta aturan kardinalitasnya.
- Spock dalam buildMenjalankan rangkaian Spock di bawah Gradle dan Maven.
Akses basis data dengan groovy.sql, mesin template, dan endpoint REST.
- groovy.sqlKelas Sql, dataset, dan pengelolaan transaksi untuk akses basis data.
- Mesin templateSimpleTemplateEngine dan MarkupTemplateEngine untuk menghasilkan teks dan HTML.
- Endpoint RESTMemanggil REST dengan JDK HttpClient, plus pengenalan Micronaut dan Grails.
Proyek penutup: memilih bentuk, merancang DSL, dan membangun dengan checkpoint Spock.
- Pemilihan proyekMemilih bentuk proyek akhir: plugin build, pustaka Jenkins, atau otomasi CLI.
- Rancang DSL lebih duluMerancang tata bahasa dan transformasi DSL sebelum implementasi.
- Membangun dengan checkpointMembangun proyek bertahap dengan spesifikasi Spock sebagai checkpoint setiap tahap.