Halo, warga Habrovsk! Dalam posting ini, kami ingin berbagi kesan kami tentang konferensi untuk pengembang Java
Joker 2018 , yang paling kami ingat dari apa yang kami dengar.
Kami berharap ini membantu Anda menavigasi video dari konferensi ketika mereka muncul di domain publik. Sementara itu, kami telah menambahkan tautan ke presentasi sedapat mungkin.

Hari 1
Jangan meninggalkan kompleksitas, lari - Venkat Subramaniam
Agile adalah kemampuan untuk beradaptasi dengan perubahan. Efektif menggunakan Agile dicegah oleh kompleksitas sistem yang kami buat sendiri.
Laporan Venkat berisi daftar masalah yang menyulitkan sistem pembicara dan saran umum tentang pengembangan perangkat lunak. Kecil kemungkinan bahwa laporan ini akan menjadi wahyu, tetapi bahkan hal-hal yang jelas perlu diketahui, terkadang berguna untuk menyegarkannya dalam memori dan digunakan.
Bagaimana kami membuat sistem menjadi kompleks:
- Bagian yang bergerak
Buat konfigurasi yang tidak perlu, buat komponen yang tidak digunakan, buat terlalu banyak lapisan, dll. - Kode tidak dapat dibaca
"Kode ini berfungsi, tetapi sepertinya tidak seharusnya." Sulit membaca kode menyebabkan perubahan yang tidak terlihat. Perubahan buram menghasilkan bug dan mengganggu pemahaman tentang apa yang terjadi dengan objek. - Terlalu banyak ketergantungan
Ketergantungan dengan cepat menjadi tidak kompatibel, semakin banyak, semakin sulit untuk mengelolanya. - Gairah nekat untuk memperkenalkan teknologi baru
Cobalah untuk menjawab pertanyaan Anda:
- Berapa harga untuk memperkenalkan teknologi baru?
- Seberapa mudah meninggalkan teknologi yang dipilih?
- Perpustakaan atau kerangka kerja? Anda menggunakan perpustakaan, dan kerangka kerja "mengelilingi Anda". Jauh lebih mudah untuk menolak perpustakaan daripada kerangka kerja. Karena itu, keputusan untuk menggunakan kerangka kerja perlu dibuat lebih hati-hati. Jika akan mudah untuk kembali ke pendekatan lama dan jika kita bisa membuktikannya, maka kita harus mengambilnya. Jangan mengunduh apa yang sebenarnya tidak Anda butuhkan.
- Lanjutkan Pengembangan Didorong. - Kesulitan acak
Misalnya, multithreading tingkat rendah. Jika Anda memecahkan masalah dengan kumpulan utas, maka sekarang Anda memiliki kumpulan masalah.
Kaskade transaksi, atau cara membangun arsitektur layanan mikro transaksional - Harald Wendel ( presentasi )
Harald mengatakan bagaimana proyek memecahkan masalah mengatur transaksi terdistribusi dengan menghapus transaksi dan menggantinya dengan Mesin Negara. Untuk menjaga konsistensi antar layanan-layanan mikro, mereka harus menerapkan dukungan untuk kondisi, termasuk disabilitas, dan menanggapi perubahan mereka. Proyek ini menggunakan Kafka untuk berkomunikasi antar layanan.
Bahkan, laporan itu punya satu ide - untuk meninggalkan transaksi ketika beralih ke sistem terdistribusi.
Cara kerja operasi transaksi sebelumnya:
- Ini masih bersifat transaksional, tetapi hanya satu operasi bisnis (secara kondisional) yang berkomitmen pada database. Orang lain dalam transaksi menyimpan database untuk Kafka.
- Juga, sebagai bagian dari transaksi, kami mendapatkan transaksi bisnis Negara baru. Ini adalah negara mandiri yang sepenuhnya benar.
- Pawang khusus membaca pangkalan: baik polling atau komit pada entitas, jika pawang berada di tempat yang sama dengan entitas. Kemudian mengirim pesan ke Kafka.
- Pelanggan Kafka memproses pesan. Di sini mekanisme jaminan pengiriman standar berguna bagi kami. Pesan ada di Kafka saat yang tepat dan suatu hari akan diproses oleh layanan.
- Selama pemrosesan, pelanggan dapat berkomitmen ke database mereka dan mengubah Negara mereka. Dalam hal ini, layanan bertukar Negara.
- Kembalikan transaksi bisnis no. Dan ada tiga opsi untuk menangani masalah:
- Sampai akhir, tunggu pesan dari Kafka diproses dengan benar.
- Jika kesalahan terjadi (dan jumlah pengulangan yang diperlukan), itu diterjemahkan untuk memulai negara "salah" yang sesuai.
- Kirim pesan ke Kafka untuk diproses oleh pemrakarsa transaksi bisnis (dan peserta lain), untuk mengambil langkah-langkah memutar kembali transaksi lokal mereka.
Memori proses Jawa di rak - Andrey Panguin
Laporan Andrey dapat digunakan sebagai referensi dan cara-cara pada masalah debugging dengan kebocoran memori asli dengan contoh memori non-tumpukan.
Laporan ini berguna untuk memahami siapa dan apa yang memakan memori. Andrei menunjukkan alat untuk menganalisis memori, termasuk AsyncProfiler, yang dibangun ke dalam Idea: "IntelliJ IDEA 2018.3 mendatang mengintegrasikan profiler pengambilan sampel overhead rendah yang dapat membuat profil JVM dan kode asli - profiler Async."
Kami menyarankan semua orang untuk menontonnya dan menjalankan modul dan layanan mikronya dalam langkah yang sama.
Pencocokan pola dan teman imajinernya - Tagir Valeev
Tagir berbicara tentang kemungkinan bahasa pemrograman: apa, bagaimana, kapan, dan dengan apa yang bisa muncul kruk di Jawa, masalah apa yang harus dipecahkan oleh pengembang dan komunitas bahasa untuk ini. Ada sedikit penerapan praktis yang jelas, tetapi dapat bermanfaat dalam jangka panjang.
Petualangan Holmes Senior dan Junior Watson di dunia pengembangan perangkat lunak [Edisi Joker] - Evgeny Borisov dan Baruch Sadogursky ( presentasi )
Abstrak laporan sudah menarik. Holmes dan Watson berjanji untuk memecahkan beberapa teka-teki dari pengembangan sehari-hari: alat, perpustakaan, dan kerangka kerja yang membingungkan pengembang biasa dalam rutinitas harian mereka.
Kami mencatat poin paling berguna dalam cerita:
- Di Spring 5, Anda bisa menambahkan nampan dan item pegas lainnya dalam file asyik eksternal. Yaitu tidak perlu membangun kembali, cukup restart, misalnya, untuk menambahkan BeanPostProcessor.
- Anda perlu mengingat nama buncisnya. Misalnya, Anda tidak dapat membuat kacang ConversionService, karena ini sudah ada di usus musim semi.
- Anda perlu mengingat standarnya. Misalnya, multi bagian hanya diperbolehkan untuk pos, dan Spring sedang menonton.
- Perlu membaca dokumentasinya. Mari kita jelaskan menggunakan contoh dari sebuah makam. AllArgsConstructor menambahkan penjelasan java.beans.ConstructorProperties untuk konstruktor. Selain itu, jika tidak ada penjelasan, Jacson menggunakan konstruktor dan pengambil default, karena nama parameter konstruktor tidak disimpan setelah kompilasi. Jika ada anotasi, nama parameter ditunjukkan di dalamnya (sesuai dengan konvensi kacang java), dan Jacson menggunakan konstruktor. Lombok SneakyThrows anotasi perubahan Memeriksa pengecualian untuk pengecualian yang tidak dicentang.
- Laporan ini juga mengangkat pertanyaan yang menarik: "Apakah kita perlu pengecualian yang dicek pada prinsipnya?" Kami pikir.
Hari 2
Hardcore Reaktif: Cara Membangun Penerbit Anda <?> - Oleg Dokuka
Kita dapat mengatakan bahwa ini adalah pengantar pemrograman reaktif: laporan menggambarkan konsep dasar dan abstraksi. Oleg menunjukkan seluruh evolusi penalaran kami, yang mengarahkan kami untuk menerapkan Penerbit dari pustaka Reactive Streams standar. Kami menyarankan Anda untuk mencari tahu dari mana kaki tumbuh.
Pembelajaran mesin di Jawa dari nol hingga produksi dalam satu jam - Derek Ferguson ( presentasi )
Anda dapat mendengarkannya jika Anda mempelajari Pembelajaran Mesin. Meskipun tidak begitu jelas untuk siapa laporan itu ditujukan. Jika orang mengerti, maka bagi mereka itu tidak lagi menarik. Jika mereka tidak mengerti, maka laporan ini tidak akan disortir, terlalu sedikit informasi untuk dipahami.
Pesan utamanya adalah: Anda dapat menggunakan Google TensorFlow untuk melatih model dari Jawa, tetapi dukungan pelatihan terbatas. Tetapi Anda dapat menggunakan model yang terlatih. Misalnya, muat model yang terlatih ke dalam microservice TensorFlow dan kirim permintaan dari Java atau microservice lain ke sana untuk mendapatkan jawaban. Misalnya, kenali gambar, ceritakan gejala, jenis penyakit apa ...
Tim TensorFlow juga memiliki Gambar Docker dengan TensorFlow, yang dapat digunakan untuk memuat model di sana dan mengirim permintaan untuk menggunakan model ini. Manis!
Micronaut vs Spring Boot, atau Siapa yang terkecil di sini? - Kirill Tolkachev dan Maxim Gorelikov
Cyril dan Maxim membandingkan kerangka kerja modern dalam hal kecepatan startup, jumlah memori yang diperlukan untuk menjalankan, dan kompleksitas pengkodean.
Satu fakta menarik perhatian kami: Micronaut mengimplementasikan DI pada waktu kompilasi, dan Spring pada saat run / run. Ini memungkinkan Micronaut untuk memulai lebih cepat. Tetapi sampai versi rilis Micronaut telah dirilis, kita harus mengambil kata.
Distributor reaktif ok.ru/music - Vadim Tsesko ( presentasi )
Vadim Tsesko berbicara tentang arsitektur distributor musik di Odnoklassniki. Laporan tersebut berisi deskripsi tentang server dan perannya, deskripsi penyeimbangan dan bagaimana Toleransi Kesalahan dan Ketersediaan Tinggi disediakan. Secara terpisah - tentang pendekatan reaktif pada kasus nyata tanpa rincian teknis khusus. OK menunjukkan contoh kerja menggunakan pendekatan reaktif.
Berbagai konsep, praktik terbaik, dan arsitektur untuk mendapatkan layanan yang toleran terhadap kesalahan karena penyeimbangan dan replikasi dan trik lain untuk menyimpan data untuk pengiriman data cepat ke pengguna disajikan. Seperti biasa, dalam presentasi, OK memiliki banyak tautan untuk studi topik lebih mendalam dari slide.
Musim Semi Reaktif - Josh Long
Laporan yang kami tuju :) Sebenarnya tidak, tapi Josh Long adalah salah satu dari dua bintang besar konferensi. Laporannya keren, menggabungkan humor dan teknologi.
Apa yang kami sebut laporan dalam praktik adalah sesi pengkodean langsung tentang cara membuat layanan microsoft reaktif menggunakan Spring WebFlux. Ini memberikan pemahaman umum tentang apa API Reaktif, menawarkan contoh penggunaan di Spring 5, dan bonusnya adalah presentasi yang menyenangkan. Ada juga contoh dengan Proaktif Reaktif sebagai alternatif untuk Zuul. Kami menyarankan semua orang untuk melihatnya.
Dunia akhirnya menjadi reaktif. Atau kesan keseluruhan dari laporan Joker
Ada banyak laporan tentang hal ini dan bahkan lebih banyak membahasnya di bidang diskusi. Faktanya, pertanyaan besarnya adalah apakah dunia telah menjadi reaktif atau sudah lama, tetapi sekarang mereka muncul dengan nama baru untuk pola lama dan menuangkan darah baru ke dalamnya.
Di antara laporan tentang reaktivitas adalah untuk setiap selera: dan murni teknis, misalnya, Josh Long, yang mengatakan bagaimana melakukan reaktivitas di musim semi. Dan kasus nyata penggunaan reaktivitas - misalnya, Vadim Tsesko dari Classmates.
Teknologi utama kami adalah Musim Semi, jadi kami menganggap laporan Josh Long harus dilihat. (
Tautan ke repositori dari laporan ). Ada contoh layanan reaktif yang bereaksi dengan Mongo, dan layanan reaktif yang secara proaktif mewakili layanan reaktif lain. Cukup berguna bagi kami untuk mencari tahu.