Artikel ini memperkenalkan cara menggunakan mode headless pada platform Java (Java SE, juga dikenal sebagai J2SE).
Mode headless adalah konfigurasi sistem saat tampilan, keyboard atau mouse kurang. Kedengarannya luar biasa, tetapi sebenarnya Anda dapat menyelesaikan operasi yang berbeda dalam mode ini, bahkan dengan data grafis.
Di mana saya bisa menggunakan model ini? Pikirkan aplikasi Anda terus -menerus menghasilkan gambar. Saat membuat gambar, Anda tidak harus menerapkan tampilan atau keyboard. Mari kita asumsikan bahwa aplikasi Anda sekarang memiliki arsitektur utama atau server berpemilik, tetapi layanan ini tidak memiliki tampilan, keyboard atau mouse. Keputusan yang ideal adalah menggunakan sejumlah besar daya komputasi visual alih -alih karakteristik non -visual. Gambar yang dihasilkan dalam mode tanpa kepala dapat diteruskan ke sistem yang sangat besar untuk rendering yang lebih dalam.
Ada banyak metode di kelas Java.awt.toolkit dan Java.awt.Graphicsenvironment. Tetapi beberapa kategori, seperti kanvas dan panel, dapat dieksekusi dalam mode tanpa kepala. Setelah platform J2SE 1.4, ia memberikan dukungan untuk mode tanpa kepala.
Catatan: Artikel ini berfokus pada dokumen versi platform Java SE6. API apa pun atau platform Java SE yang ditingkatkan lainnya ditinjau dan disetujui oleh kelompok ahli JSR270 (JSR 270 Expert Group.).
Toolkit
Java.awt.toolkit Class adalah kelas induk abstrak Abstrak Window Toolkit (AWT). Subkelas Toolkit digunakan untuk mengikat berbagai komponen AWT ke toolkit lokal tertentu.
Banyak komponen akan terpengaruh jika perangkat, keyboard atau mouse tidak didukung. Konstruktor yang cocok harus melempar pengecualian eksekusi tanpa kepala:
Komponen kelas berat ini membutuhkan fungsi grafis peer -untuk -peer -level untuk mendukungnya.
Komponen yang berkaitan dengan kanvas, panel, dan komponen gambar tidak perlu melemparkan kelainan Eksepsi Kepala, karena komponen -komponen ini dapat menggunakan fungsi kosong pada tingkat sistem operasi, dan kemudian diproses sebagai komponen ringan.
Toolkit Headless juga mengikat komponen Java ke sumber daya lokal, tetapi hanya akan melakukan ini hanya ketika sumber daya tidak termasuk perangkat tampilan atau perangkat input.
Lingkungan Grafik
Kelas Java.Awt.GraphicsEnvalonment adalah kelas abstrak yang menjelaskan kumpulan objek GraphicsDevice dan objek font yang dapat digunakan dalam teknologi Java dalam platform tertentu. Sumber daya di GraphicSEnValonment dapat berupa peralatan lokal atau panjang. Objek GraphicsDevice dapat berupa display, printer atau cache grafis, dan mereka adalah tujuan dari fungsi gambar Graphics2D. Setiap GraphicsDevice memiliki banyak objek konfigurasi grafis yang terkait dengannya. Objek -objek ini menentukan lingkungan konfigurasi yang berbeda, dan GraphicsDevice dapat digunakan di lingkungan konfigurasi ini.
Tabel 1 menunjukkan metode GraphicSEnValonment, periksa dukungan mode tanpa kepala
Tabel 1. Metode Mode Tanpa Kepala
Catatan: Metode isheadless () Memeriksa atribut sistem tertentu, java.awt.headless alih -alih konfigurasi perangkat keras sistem.
Kode yang dilemparkan oleh HeadlessException tergantung pada tampilan, keyboard, dan mouse sebagai lingkungan yang tidak mendukung semua ini.
Atur mode tanpa kepala
Gunakan mode headless untuk beroperasi, Anda harus terlebih dahulu memahami cara memeriksa dan mengatur atribut sistem yang terkait dengan ini. Selain itu, Anda harus memahami cara membuat kelas implementasi tanpa kepala untuk menggunakan bilah alat.
Konfigurasi Atribut Sistem
Untuk mengaktifkan mode headless, Anda perlu menggunakan metode SetProperty () untuk mengatur atribut sistem yang sesuai. Metode ini memungkinkan Anda untuk mengatur atribut sistem dengan nilai yang diharapkan.
System.setProperty ("java.awt.headless", "true");Dalam kode di atas, java.awt.headless adalah atribut sistem, dan benar adalah nilai yang kami tetapkan.
Jika Anda ingin menggunakan lingkungan tanpa kepala dan tradisional di salah satu program yang sama, Anda dapat menggunakan baris perintah berikut untuk menyelesaikan:
java -djava.awt.headless = true
Buat toolkit default
Jika atribut sistem nama java.awt.headless diatur ke true, toolkit tanpa kepala akan digunakan. Selanjutnya, gunakan metode getDefaultToolKit () untuk membuat instance alat tanpa kepala:
Toolkit tk = toolkit.getDefaultToolKit ();
Pemeriksaan mode tanpa kepala
Untuk memeriksa kegunaan mode headess, gunakan metode isheadless () dari kelas graphicsEnvironment ::
GraphicsEnvironment ge = graphicsEnvironment.getLocalGraphicSEnvironment ();
Metode ini memeriksa atribut sistem java.awt.headless. Jika atribut ini memiliki nilai True, itu akan melempar Exception Headless dari toolkit dan ketergantungan pada kelas tampilan, keyboard, dan mouse graphicsEnvalonment.
Operasi dalam mode tanpa kepala
Setelah mengatur mode tanpa kepala dan membuat instance toolkit tanpa kepala, aplikasi Anda dapat melakukan operasi berikut:
Kanvas (kanvas)
Kode berikut akan menarik area persegi panjang kosong di layar, dan Anda dapat menggambar garis di atasnya. Anda dapat menggunakan kelas Canvas untuk membuat komponen kanvas baru.
Final Canvas C = New Canvas () {Public Void Paint (Graphics G) {Rectangle R = GetBounds (); , R.Width -1, 0);}};Font (font)
Kode ini menunjukkan cara menggunakan font untuk menggambar string teks dan mengatur font teks. Objek grafik digunakan untuk menggambar string ini.
Public void cat (grafik g) {g.setfont (font baru ("Arial", font.italic, 12); g.drawstring ("test", 32, 8);}
Warna
Kode ini menunjukkan cara menggunakan nilai merah, hijau, dan biru yang ditentukan untuk mengatur warna garis. Objek grafis digunakan untuk menggambar garis ini.
Public Void Paint (Graphics G) {G.SetColor (Warna Baru (255, 127, 0));Gambar
Dalam kode berikut, metode baca () dari kelas javax.imageio.imageio mendekodekan file grapefruit.jpg yang ditunjukkan pada Gambar 1 dan mengembalikan gambar cache.
Gambar i = null; coba {file f = file baru ("grapefruit.jpg");Gambar 1. File gambar grapefruit.jpg
Mencetak
Kode ini menunjukkan cara mencetak kanvas yang tersedia, Anda dapat menggunakan metode cat untuk menyesuaikan layar default printer.
Printerjob pj = printerjob.getPrinterJob (); ) .Translate (pf.getimageablex (), pf.getimageabley ());
Berbunyi
Kode berikut menunjukkan metode bip jika metode bip dari kelas toolkit digunakan.
Toolkit tk = toolkit.getDefaultToolKit ();
Contoh sederhana menggunakan mode tanpa kepala
Contoh headlessbasics berikut menggunakan semua fungsi yang dijelaskan dalam artikel.
Untuk menjalankan contoh ini, Anda perlu menggunakan Javac untuk menyusun kode berikut. Salin file gambar grapefruit.jpg ke direktori tempat kelas headlessbasics berada.
Impor Java.awt.*; // Sebut ini sebelum toolkit telah diinisialisasi, yaitu, // sebelum toolkit.getDefaultToolKit () telah dipanggil. Properti diatur ke true, ini juga akan menjadi kepala tanpa kepala GraphicsEnvironment.getLocalGraphicsVirororonment (); ; Panel diizinkan. println ("Canvases dibuat); .Height -1); dan font g.setfont (font baru ("Arial", font.italic, 12); g.drawstring ("tes", 32, 8);}; // dan semua operasi bekerja dengan benar. C.setbounds (32, 32, 128, 128); .PrintStackTrace (System.err);} Gambar akhir IM = i; (PageIndex> 0) {ret urn printable.no_such_page;} ((graphics2d) g) .translate (pf.getimageablex (), pf.getimageabley ()); Lukiskan gambar. Z) {z.printstacktrace (System.err);}}}}}}}Gambar 2 menunjukkan hasil pencetakan dalam contoh ini.
Gambar 2. Output cetak headlessbasics.
Selain itu, Anda dapat melihat informasi berikut:
Mode tanpa kepala: Truejava.awt.headlessExceptionat Java.awt.graphicsenvironment.Checkheadless (Sumber yang tidak diketahui) di Java.awt.window. Java: 24) Bingkai dibuat: falsejava.head.headlessException java.awt.graphicsenvalonment.Checkheadless (sumber yang tidak diketahui) t java.awt.button. dibuat: false
Catatan: Untuk tujuan demonstrasi, kode awal akan menyebabkan aplikasi ini melempar 2 Java.Awt.HeadlessExceptions kelainan.
Sebagai pengganti untuk cara sebelumnya, Anda dapat memasukkan informasi output standar ke dalam file dan mencetak file. Dalam hal ini, gunakan baris perintah berikut untuk menjalankan contoh ini:
java headlessbasics 2> standard_output.txt
Konversi aplikasi yang ada ke mode tanpa kepala.
Bagaimana Anda mengubah aplikasi yang ada menjadi mode tanpa kepala yang dapat dieksekusi? Cara paling efektif untuk menjalankan konversi ini adalah dengan menganalisis kode sumber Anda untuk menentukan bahwa fungsi apa pun tergantung pada mode tanpa kepala. Dengan kata lain, untuk mewujudkan fitur yang sama, Anda harus menemukan kelas dan metode yang akan melempar pengecualian Exception headless, dan kemudian menggunakan mode headless independen untuk mengganti kelas dan metode ini.
Anda dapat menggunakan Java SE 6 API untuk menjelaskan untuk menentukan apakah kelas atau metode tertentu mendukung mode tanpa kepala. Jika komponen tertentu tidak mendukung mode tanpa kepala, satu -satunya kelainan yang perlu ditangkap oleh program Anda adalah Exception Headless. Itu dibuang sebelum kemungkinan kelainan lainnya. Inilah sebabnya mengapa tidak ada kebutuhan khusus untuk menangkap kelainan lain dalam contoh kode bagian ini: gunakan mode tanpa kepala ".
Anda pasti akan menemukan manfaat dari metode lain yang berguna untuk menggunakan mode tanpa kepala. Kami berharap artikel ini dapat membantu Anda menyelesaikan tugas ini dan memainkan dunia baru di platform Java SE.