Mustaqil ish-1 Mavzu: “Java nio” Topshirdi: Sayipov Sh. T 416-20 guruh Qabul qildi: Abdullayev U


Download 137.97 Kb.
bet4/4
Sana31.01.2024
Hajmi137.97 Kb.
#1828770
1   2   3   4
Bog'liq
Sayipov SH tarmoq dasturlash fanidan 1-mustaqil ishi

Server: SocketChannelServer.java


import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.SocketChannel;
import java.nio.file.Path;
import java.nio.file.Paths;

public class SocketChannelServer {


public static void main(String[] args) throws IOException {
SocketChannel server = SocketChannel.open();
SocketAddress socketAddr = new InetSocketAddress("localhost", 9000);
server.connect(socketAddr);

Path path = Paths.get("C:/Test/temp.txt");


FileChannel fileChannel = FileChannel.open(path);
ByteBuffer buffer = ByteBuffer.allocate(1024);
while(fileChannel.read(buffer) > 0) {
buffer.flip();
server.write(buffer);
buffer.clear();
}
fileChannel.close();
System.out.println("File Sent");
server.close();
}
}
JAVA IO va JAVA NIO o`rtasidagi farq
Java IO (Input/Output) o'qish va yozish operatsiyalarini bajarish uchun ishlatiladi. java.io to'plami kiritish va chiqarish operatsiyalari uchun zarur bo'lgan barcha sinflarni o'z ichiga oladi. Holbuki, Java NIO (Yangi IO) yuqori tezlikdagi IO operatsiyalarini amalga oshirish uchun JDK 4 dan kiritilgan. Bu standart IO API-ga muqobildir. Ushbu maqolada ushbu ikkita IO paketi o'rtasidagi farq muhokama qilinadi.
Java IO va Java NIO o'rtasidagi farqni tushunishdan oldin biz ikkala I/U paketini farqlovchi bir nechta asosiy tushunchalarni tushunishimiz kerak:
Oqimga yo'naltirilgan va buferga yo'naltirilgan paketlar:
Java IO - bu oqimga yo'naltirilgan paket bo'lib, uni oqimdan bir vaqtning o'zida bir yoki bir nechta bayt o'qish mumkin degan ma'noni anglatadi. Ma'lumotlar manbai/sink va java dasturi o'rtasida ma'lumotlarni uzatish uchun oqimdan foydalanadi. Bu bir tomonlama ma'lumotlarni uzatish. Quyidagi rasm oqimga yo'naltirilgan paketni ko'rsatadi:

1.5 –rasm ma’lumotlarni uzatish uchun paket turi
Java IO dan farqli o'laroq, Java NIO buferga yo'naltirilgan paketdir. Bu shuni anglatadiki, ma'lumotlar kanal yordamida keyingi ishlov beriladigan buferga o'qiladi. Masalan, kanaldan ma'lumotlarni buferga o'qishni so'ragan ip va kanal bir vaqtning o'zida buferga ma'lumotlarni o'qiyotganda, ip boshqa ishga ketishi mumkin. Ma'lumotlar buferga o'qilgandan so'ng, ip o'qish jarayonida qoldirgan ishni qayta ishlashni davom ettirishi mumkin. Shuning uchun NIO ikki tomonlama ma'lumotlarni uzatishdir. Quyidagi rasmda buferga yo'naltirilgan paket ko'rsatilgan:

1.6-rasm. IOni blokirovka qilish va bloklanmaydigan IO paketlari:
Java IO blokirovka qiluvchi IO hisoblanadi. Bu shuni anglatadiki, agar ip o'qish yoki yozish operatsiyasini chaqirsa, o'qish uchun ma'lumotlar mavjud bo'lgunga qadar yoki ma'lumotlar to'liq yozilgunga qadar bu ip bloklanadi. Shuning uchun u sinxron IO yoki blokirovka qiluvchi IO.
Java IO dan farqli o'laroq, Java NIO bloklanmaydigan IO hisoblanadi. Bu shuni anglatadiki, agar ip o'qish yoki yozish amallarini chaqirayotgan bo'lsa, o'qilishi kerak bo'lgan ma'lumotlar mavjud bo'lmaguncha yoki ma'lumotlar to'liq yozilmaguncha bu ip bloklanmaydi, aksincha ip boshqa narsaga o'tadi. Shuning uchun bu asinxron IO yoki bloklanmaydigan IO.
Kanallar:Kanal ob'ekt va bufer o'rtasida ma'lumotlarni samarali uzatish uchun vositadir. U ma'lumotlar manbai/sink bilan ochiq ulanish uchun shlyuz vazifasini bajaradi.
Selektor:Selektor bitta ip yordamida bir nechta IO kanallari orasidan kanalni tanlaydi.


Quyidagi jadval Java IO va Java NIO o'rtasidagi farqlarni ko'rsatadi :

Java IO

Java NIO

Java IO Java Input Output degan ma'noni anglatadi

Java NIO Java New Input Output degan ma'noni anglatadi

Java IO java.io paketi ichida ishlaydi

Java NIO java.nio paketi ichida ishlaydi

Java IO oqimga yo'naltirilgan

Java NIO buferga yo'naltirilgan

IO ishlashini bloklash

Bloklanmagan IO ishlashi

Kanallar mavjud emas

Kanallar mavjud

U oqimdagi ma'lumotlar bilan shug'ullanadi

U bloklardagi ma'lumotlar bilan shug'ullanadi

Tanlovchilar kontseptsiyasini o'z ichiga olmaydi

Tanlovchilar tushunchasini o'z ichiga oladi




XULOSA:
Java NIO (New I/O) yoki Non-blocking I/O, standart Java I/O funksiyalarini takomillashtiruvchi, ko'p tomonlama va to'g'ri amal qiladigan, kuchli va effektiv I/O (Input/Output) interfeysini taqdim etadi.
Bu, klassik Java I/O API'sidan farqli ravishda non-blocking (to'g'ri amal qiladigan) I/O amalini ta'minlaydi. Java NIO, kanallar (channels) va bu kanallar orqali ishlash uchun bufferdagi narsalar (buffers)ga e'tibor qaratadi. Ushbu texnologiya asosida to'g'ri amal qiladigan (non-blocking) operatsiyalarni bajarishga imkoniyat beradi.
Java NIO-ni ishlatishda quyidagi asosiy obyektlar mavjud:
Kanallar (Channels): Kanallar, I/O operatsiyalarni bajarish uchun manba va manba qabul qilish uchun bo'lgan interfeyslar. Misol uchun, FileChannel fayllar bilan ishlashda, SocketChannel o'zaro aloqalar uchun va boshqa kanallar mavjud.
Buffe'rlar (Buffers): Buffe'rlar, ma'lumotlarni o'qish va yozish jarayonlari uchun o'z ichiga olgan xotira qismlaridir. Bu, ma'lumotlar kanallardan o'qilib, kanallarga yozilib berish uchun foydalaniladi.
Selector: Selector, ko'p qurilmali serverlar yaratishda va bir nechta kanallarni bitta thread ichida boshqarish uchun foydalaniladi. Selector, bir nechta kanal bilan aloqalarni boshqarish uchun ishlatiladi va kanallarga tayanch bo'lgan yangi ma'lumotlarni aniqlay oladi.
Java NIO, yuqori miqyosdagi ma'lumotlar almashish va kuchli tarmoqlar ustida effektiv ishlash talabini qondiradi. Ammo, uning oddiy Java I/O API'siga nisbatan qiyinroq bo'lishi va ko'p kodni talab etishi mumkinligiga ega.
Agar sizning dastur qilingan maqsadingiz ko'paktan ko'proq parallel ma'lumotlarni boshqarish yoki non-blocking I/O operatsiyalarini bajarish bo'lsa, Java NIO sizga bu muammolarni hal qilishda yordam berishi mumkin. Lekin, undan foydalanish avval, uni to'liq tushunib, kerak bo'lgan muammolarni va vazifalarni aniqlash kerak.
FOYDALANILGAN ADABIYOYLAR:
1. https://metanit.com/java/javafx
2. Марти Холл, Лэрри Браун. Программирование для Web. Библиотека профессионала, 2002 г. Издательство: "Вильямс"
3. Elliotte Rusty Harold, Java™ Network Programming, Third Edition, Published by O’Reilly Media, Inc., 2005, 738 p.
4. Joel Murach and Andrea Steelman, Murach's Java Servlets and JSP (2nd Edition), 2008, 729 p.
5. Сью Шпильман JSTL. Практическое руководство для JSPпрограммистов Издательство: КУДИЦ-Образ, 2004 г.
6. Java портал Oracle –http://www.oracle.com.
Download 137.97 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling