1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án CUỐI kỳ lập TRÌNH MẠNG đề tài xây DỰNG ỨNG DỤNG CHAT ROOM sử DỤNG GIAO THỨC UDP

52 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng Ứng Dụng Chat Room Sử Dụng Giao Thức UDP
Tác giả Nguyễn Khắc Thịnh, Nguyễn Hải Dương, Nguyễn Phương Thanh, Lê Hoàng Minh
Người hướng dẫn TS. Hoàng Hữu Đức
Trường học Trường Đại Học Công Nghệ Thông Tin & Truyền Thông Việt - Hàn
Chuyên ngành Lập trình Mạng
Thể loại Đồ Án Cuối Kỳ
Năm xuất bản 2022
Thành phố Đà Nẵng
Định dạng
Số trang 52
Dung lượng 1,46 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Chương I: Giới Thiệu Tổng Quan (8)
    • 1. Khái niệm cơ bản về Internet (8)
    • 2. Network Socket (8)
    • 3. User Datagram Protocol (UDP) (0)
    • Chương 2: Tìm Hiểu Về Ngôn Ngữ Java (16)
      • 1. Khái niệm cơ bản về Java (16)
      • 2. Công dụng (16)
      • 3. Sự lựa chọn phổ biến (17)
      • 4. Java hoạt động như thế nào (18)
      • 5. Lập trình hướng đối tượng là gì (19)
      • 6. Các tính chất của Java (20)
      • 7. Các loại access modifier trong Java (21)
      • 8. Nested Class (21)
      • 9. Biến (21)
      • 10. Exception (22)
      • 11. Các kiểu dữ liệu (23)
      • 12. Ép kiểu trong Java (24)
      • 13. Toán tử Instanceof (25)
      • 14. Nạp chồng (Overloading) và ghi đè (Overriding) (25)
      • 15. Interface (26)
      • 16. Abstracts (26)
      • 17. Thuật toán (26)
      • 18. Collection (28)
      • 19. Quan hệ kế thừa trong Java (31)
    • Chương 3: Tổng quan về lập trình mạng (32)
      • 1. Tổng quan về mạng máy tính (32)
      • 2. Mô hình mạng OSI (35)
      • 3. Giao thức truyền thông (37)
    • Chương 4:Xây dựng ứng dụng thực tế (43)
      • 1. Phân tích yêu cầu đề tài (43)
      • 2. Mục đích xây dựng (44)
      • 3. Xác định yêu cầu của người dùng (44)
      • 4. Yêu cầu giao diện (44)
      • 5. Phân tích các chức năng của hệ thống (45)
      • 6. Biểu đồ phân tích thiết kế hệ thống (45)
      • 7. Thiết kế giao diện và chức năng (46)
  • KẾT LUẬN (51)
  • TÀI LIỆU THAM KHẢO (52)

Nội dung

Các ổ cắm chỉ được tạo trong suốt thờigian tồn tại của một quy trình ứng dụng đang chạy.Do tiêu chuẩn hóa các giao thức TCP/IP trong quá trình phát triểnInternet, thuật ngữ network socke

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

THÔNG TIN &

TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

Sinh viên thực hiện: Nguyễn Khắc thịnh

Nguyễn Hải Dương Nguyễn Phương Thanh

Lê Hoàng Minh

Giảng viên hướng dẫn: TS Hoàng Hữu Đức

Trang 2

Đà Nẵng, tháng 12 năm 2022

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

&

TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN CUỐI KỲ LẬP TRÌNH HỆ THỐNG

ĐỀ TÀI:

XÂY DỰNG CHƯƠNG TRÌNH

HỘI THẢO TỪ XA

Trang 3

Đà Nẵng, tháng 12 năm 2022

LỜI CẢM ƠN

Đầu tiên nhóm chúng em xin chân thành cảm ơn thầy giáo TS.Hoàng Hữu Đức giảng viên môn lập trình mạng, người đã luôn hỗ trợchúng em trong suốt quá trình học tập Trong thời gian cùng nhau làm đồ

án, chúng em không những học hỏi, bổ sung được những kiến thức mà cảithiện nâng cao khả năng làm việc nhóm, tập trung và có trách nhiệm vớicông việc của nhóm mình

Dù đã rất cố gắng hoàn thành đồ án nhưng do kiến thức vẫn còn hạnchế nên những sai sót, lầm lẫn chắc chắn vẫn sẽ có Chúng em mong nhậnđược sự cảm thông và góp ý của thầy giáo TS Hoàng Hữu Đức, quý thầy

cô giáo trong Khoa và tất cả các bạn!

Chúng em xin chân thành cảm ơn!

Trang 4

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

Trang 5

LỜI NÓI ĐẦU

Với sự phát triển nhảy vọt của công nghệ thông tin hiện nay, Internetngày càng giữ vai trò quan trọng trong các lĩnh vực khoa học kỹ thuật vàđời sống Dĩ nhiên các bạn đã được nghe nói nhiều về Internet, nói mộtcách đơn giản, Internet là một tập hợp máy tính nối kết với nhau, là mộtmạng máy tính toàn cầu mà bất kì ai cũng có thể kết nối bằng máy tínhriêng của họ Với mạng Internet, tin học thật sự tạo nên một cuộc cáchmạng trao đổi thông tin trong mọi lĩnh vực văn hóa, xã hội, chính trị, kinhtế

Ngày nay, việc đang phát triển hay xây dựng các ứng dụng và nềntảng chatting hiện đang được phổ biến rộng rãi Chatting được hiểu đơngiản là hành động trao đổi thông tin dưới các dạng, giữa người hoặc nhómngười, từ máy này sang máy kia cùng lúc, bằng bàn phím hơn là thiết bịchuyển âm Từ đó nhóm chúng em muốn xây dựng chat room sử dụng giaothức socket TCP bằng ngôn ngữ Java

Sơ lược về socket, socket là giao diện lập trình ứng dụng mạng đượcdùng để truyền và nhận giữ liệu trên internet Giữa hai chương trình chạytrên mạng cần có một liên kết giao tiếp hai chiều, hay còn gọi là two-waycommunication để kết nối 2 process trò chuyện với nhau Điểm cuối(endpoint) của liên kết này được gọi là socket Socket sẽ được sử dụng để

"lắng nghe" mỗi khi có tin nhắn mới, reaction để cập nhật lên giao diện.Việc cập nhật dữ liệu thời gian thực như thế đem lại một trải nghiệm tuyệtvời cho người dùng Nó sẽ giải quyết vấn đề một cách nhanh gọn và tiếmkệm tài nguyên cho cả client và server

Như đã nói ở trên, nhóm chúng em sẽ xây dựng chat room bằngsocket dựa trên giao thức TCP (Transmission Control Protocol) việc

Trang 6

truyền dữ liệu không yêu cầu có sự thiết lập kết nối giữa 2 quá trình Do

đó, nó được gọi là socket hướng kết nối

MỤC LỤC

LỜI CẢM ƠN 3

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 4

LỜI NÓI ĐẦU 5

MỤC LỤC 6

Chương I: Giới Thiệu Tổng Quan 8

1 Khái niệm cơ bản về Internet 8

2 Network Socket 8

3 User Datagram Protocol (UDP) 10

Chương 2: Tìm Hiểu Về Ngôn Ngữ Java 15

1 Khái niệm cơ bản về Java 15

2 Công dụng 15

3 Sự lựa chọn phổ biến 16

4 Java hoạt động như thế nào 17

5 Lập trình hướng đối tượng là gì 17

6 Các tính chất của Java 18

7 Các loại access modifier trong Java 19

8 Nested Class 20

9 Biến 20

10 Exception 21

11 Các kiểu dữ liệu 22

12 Ép kiểu trong Java 22

13 Toán tử Instanceof 23

14 Nạp chồng (Overloading) và ghi đè (Overriding) 24

15 Interface 24

16 Abstracts 24

Trang 7

18 Collection 26

19 Quan hệ kế thừa trong Java 29

Chương 3: Tổng quan về lập trình mạng 30

1 Tổng quan về mạng máy tính 30

2 Mô hình mạng OSI 33

3 Giao thức truyền thông 35

Chương 4:Xây dựng ứng dụng thực tế 37

1 Phân tích yêu cầu đề tài 37

2 Mục đích xây dựng 38

3 Xác định yêu cầu của người dùng 38

4 Yêu cầu giao diện 38

5 Phân tích các chức năng của hệ thống 38

6 Biểu đồ phân tích thiết kế hệ thống 38

7 Thiết kế giao diện và chức năng 39

KẾT LUẬN 43

TÀI LIỆU THAM KHẢO 44

Trang 8

Chương I: Giới Thiệu Tổng Quan

1. Khái niệm cơ bản về Internet 1.1 Giới thiệu chung

Internet là mạng của các máy tính trên toàn cầu được thành lập từnhững năm 80 bắt nguồn từ mạng APARRNET của bộ quốc phòng Mỹ

Vào mạng Internet, bạn có thể tìm thấy nhiều tài liệu để nghiên cứu,học tập, trao đổi thư từ, đặt hàng, mua bán Một trong những mục tiêu củaInternet là chia sẻ thông tin giữa những người dùng trên nhiều lĩnh vựckhác nhau

Mỗi máy tính trên Internet được gọi là một host Mỗi host có khảnăng như nhau về truyền thông tới máy khác trên Internet Một số hostđược nối tới mạng bằng đường nối Dial-up (quay số) tạm thời, số khácđược nối bằng đường nối mạng thật sự 100% (như Ethernet, Tokenring )

1.2 Phân loại

Các máy tính trên mạng được chia làm 2 nhóm Client và Server.

Client: Máy khách trên mạng, chứa các chương trình Client

Server: Máy phục vụ-Máy chủ Chứa các chương trình Server, tàinguyên (tập tin, tài liệu ) dùng chung cho nhiều máy khách Server luôn ởtrạng thái chờ yêu cầu và đáp ứng yêu cầu của Client

Internet Server: Là những server cung cấp các dịch vụ Internet như Web Server, Mail Server, FPT Server…

2.1 Các khái niệm cơ bản về Socket

Socket là một cấu trúc phần mền trong nút mạng của mạng máy tính đóng vai trò là điểm cuối để gửi và nhận dữ liệu trên mạng Cấu

Trang 9

trúc và thuộc tính của socket được xác định bởi giao diện lập trình ứngdụng (API) cho kiến trúc mạng Các ổ cắm chỉ được tạo trong suốt thờigian tồn tại của một quy trình ứng dụng đang chạy.

Do tiêu chuẩn hóa các giao thức TCP/IP trong quá trình phát triểnInternet, thuật ngữ network socket được sử dụng phổ biến nhất trong ngữcảnh của bộ giao thức Internet và do đó thường được gọi là ổ cắm Internet.Socket được xác định bên ngoài đối với các host khác bằng socket address,

là transport protocol, IP address, và số port

2.2 Tìm hiểu rõ hơn về Network Socket

Giao diện lập trình ứng dụng (API) cho ngăn xếp giao thức mạng tạomột tay cầm cho mỗi socket được tạo bởi một ứng dụng, thường được gọi

là socket descriptor Tại thời điểm tạo với API, network socket liên kết với

sự kết hợp của một loại giao thức mạng được sử dụng để truyền, địa chỉmạng của máy lưu trữ và số port Ports là các tài nguyên được đánh số đạidiện cho một loại cấu trúc phần mềm khác Chúng được sử dụng làm loạidịch vụ và sau khi được tạo bởi một quy trình, chúng sẽ đóng vai trò làthành phần vị trí có thể định địa chỉ bên ngoài (từ mạng), để các máy chủkhác có thể thiết lập kết nối Network Socket có thể được dành riêng chocác kết nối liên tục để liên lạc giữa hai nút hoặc chúng có thể tham gia vàoliên lạc multicast và không kết nối

Giao diện lập trình ứng dụng (API) mà các chương trình sử dụng đểgiao tiếp với ngăn xếp giao thức, sử dụng network socket, được gọi là APIsocket Việc phát triển các chương trình ứng dụng sử dụng API này đượcgọi là lập trình network socket hoặc lập trình mạng API socket Internetthường dựa trên tiêu chuẩn socket Berkeley Trong tiêu chuẩn socketBerkeley, socket là một dạng mô tả tệp, do triết lý Unix rằng "mọi thứ đều

là tệp" và sự tương đồng giữa socket và tệp Cả hai đều có chức năng đọc,viết, mở và đóng Trong thực tế, sự khác biệt làm

Trang 10

căng thẳng sự tương tự và các giao diện khác nhau (gửi và nhận) được sửdụng trên một socket Trong giao tiếp giữa các quá trình, mỗi đầu thường

có socket riêng

Trong các giao thức Internet tiêu chuẩn TCP và UDP, socket address

là sự kết hợp của địa chỉ IP và số port, giống như một đầu của kết nối điệnthoại là sự kết hợp của số điện thoại và một số extension Socket không cần

có địa chỉ nguồn để chỉ gửi dữ liệu, nhưng nếu một chương trình liên kếtsocket với source address, thì socket có thể được sử dụng để nhận dữ liệuđược gửi đến địa chỉ đó Dựa trên address, socket Internet phân phát cácdata packets cho ứng dụng thích hợp

Socket thường đề cập cụ thể đến socket Internet hoặc socket TCP.Socket Internet được đặc trưng tối thiếu bởi những điều sau đây:

Địa chỉ socket cục bộ, bao gồm địa chỉ IP cục bộ và (đối với TCP và UDP, nhưng không phải IP) số port

Giao thức: Giao thức vận chuyển, ví dụ: TCP, UDP, IP Điều này cónghĩa là các điểm cuối (cục bộ hoặc từ xa) có cổng TCP 53 và cổng UDP

53 là các socket riêng biệt, trong khi IP không có port

Một socket đã được kết nối với một socket khác, ví dụ, trong quá trình thiết lập kết nối TCP, cũng có một địa chỉ socket từ xa

3 Transmission control protocol (TCP)

3.1 Sơ lược về TCP

Internet đã và đang là một phần không thể thiếu trong cuộc sốnghàng ngày của chúng ta Tuy nhiên, không phải ai cũng hiểu được tườngtận về cách thức hoạt động của Internet Phương thức truyền dẫn màInternet đang sử dụng là phương thức TCP/IP, một trong những phươngthức truyền dẫn phổ biến nhất hiện nay

TCP là một giao thức mạng quan trọng được sử dụng trong việc

Trang 11

một tập hợp các quy tắc và trình tự kiểm soát việc thực hiện truyền dữ liệusao cho tất cả mọi người trên thế giới bất kể vị trí địa lý, bất kể ứng dụng,phần mềm họ đang sử dụng đều có thể thao tác theo cùng một phương thứcgiống nhau được gọi là TCP.

TCP thường kết hợp với IP (Giao thức Internet) theo một cặpđược gọi là TCP/IP Bạn có thể bắt gặp cụm thuật ngữ này trong phầnnetwork setting trên máy tính, điện thoại thông minh hoặc các thiết bịcầm tay của mình IP sẽ xử lý việc gán địa chỉ và chuyển tiếp các gói tin

từ nguồn đến đích trong khi TCP kiểm soát độ tin cậy của truyền dẫn

3.2. Các kết nối TCP và các cổng

Hai ứng dụng dùng TCP phải thiết lập một kết nối TCP trước khi

dữ liệu có thể được truyền Mỗi kết nối sẽ tồn tại giữa một cặp TCP socketvới socket được định nghĩa như là sự kết hợp của địa chỉ IP, cổng đượcdùng, giao thức lớp vận chuyển Quá trình thiết lập kết nối, khởi tạo socketbao gồm giá trị cổng nguồn và cổng đích, chỉ số tuần tự và ACK Hình 1

mô tả tiến trình bắt tay ba bước trong thiết lập một kết nối TCP và quátrình hủy một kết nối TCP

Hình 1

Trang 12

Trong quá trình thiết lập kết nối, hai host sẽ chọn lựa cổng, chọnlựa chỉ số tuần tự (sequence number) và dùng các chỉ số của TCP để nhận

ra thông điệp trong quá trình bắt tay ba bước Đầu tiên, đối với vấn đềcổng, bên máy chủ (máy chủ) phải lắng nghe các yêu cầu kết nối từ máyyêu cầu (máy khách), trong trường hợp này là cổng 80 Phía máy khách sẽchọn một cổng chưa dùng làm cổng nguồn, thường là giá trị 1024 hoặc lớnhơn Lưu ý rằng khi so sánh các phân đoạn (segment) trong tiến trình trên,giá trị cổng là không đổi Segment là đơn vị mô tả dữ liệu tại lớp vậnchuyển được gọi là PDU (Protocol Data Unit)

Trong phần header của TCP có bao gồm vài trường có giá trị 1 bit,gọi là các cờ Các cờ này phục vụ cho các mục đích khác nhau Các cờSYN và ACK sẽ chỉ ra một segment có phải là segment đầu tiên hay là thứhai trong một kết nối TCP mới Một segment có cờ SYN sẽ là segment đầutiên trong một kết nối TCP Một segment có cả SYN và ACK sẽ là segmentthứ hai trong một kết nối Các cờ này cho phép các host dễ dàng nhận racác yêu cầu kết nối mới Chỉ số ban đầu có thể được gán về bất kỳ giá trịhợp lệ nào và thường không được gán về 0 Hãy nhớ rằng trong quá trìnhkhôi phục lỗi, việc sử dụng các giá trị này là độc lập trong cả hai chiều

Trang 13

3.3 Cấu trúc header TCP

Do là giao thức tin cậy nên cấu trúc gói tin của TCP rất phức tạp

Source port và destination port (đều dài 16 bit): được sử dụng

để định danh cho session của giao thức nào đó trên lớp ứng dụng đang được truyền tải trong TCP segment đang xét

Sequence number (32 bit): dùng để đánh thứ tụ gói tin (từ

số sequence nó sẽ tính ra được số byte đã được truyền)

Acknowledge number (32 bit): : sùng để báo đã nhận được gói

tin nào và mong nhận được byte mang số thứ tự nào tiếp theo

Header length (4 bit): cho biết toàn bộ header dài bao nhiêu

tính theo đơn vị word(1 Word = 4 byte)

Các bit reserverd (4 bit): đều được thiết lập bằng 0.

Các bit control (9 bit): các bit dùng để điều khiển các cờ

(flag) ACK, cờ Sequence

Window size (16 bit): số lượng byte được thiết bị sẵn sàng

tiếp nhận

Trang 14

Checksum (16 bit): kiểm tra lỗi của toàn bộ TCP segment.

Urgent pointer (16 bit): sử dụng trong trường hợp cần ưu tiên

dữ liệu

Options (tối đa 32 bit): cho phép thêm vào TCP các tính năng khác

Data: dữ liệu của lớp trên

3.4 Tính toán tổng kiểm tra

Tổng kiểm tra có 16 bit cho cả phần header và dữ liệu, nó xác minhtính toàn vẹn dữ liệu của TCP

Tổng kiểm tra TCP cho IPv4

Khi TCP chạy trên IPv4 , phương thức được sử dụng để tính toántổng kiểm tra được định nghĩa như sau:

Trường tổng kiểm tra là phần bù 16 bit của tổng phần bù 1 của tất

cả các từ 16 bit trong tiêu đề và văn bản Tính toán tổng kiểm tra cầnđảm bảo căn chỉnh 16 bit của dữ liệu được tính tổng Nếu một phân đoạnchứa một số lẻ các octet tiêu đề và văn bản, thì có thể đạt được sự liênkết bằng cách đệm octet cuối cùng bằng các số 0 ở bên phải của nó đểtạo thành một từ 16 bit cho mục đích tổng kiểm tra Phần đệm khôngđược truyền như một phần của phân khúc Trong khi tính toán tổng kiểmtra, trường tổng kiểm tra được thay thế bằng số không

Tổng kiểm tra TCP cho IPv6

Khi TCP chạy trên , phương thức được sử dụng để tính toán

tổng kiểm tra sẽ thay đổi:

Bất kỳ giao thức truyền tải hoặc giao thức lớp trên nào khác baogồm các địa chỉ từ tiêu đề IP trong tính toán tổng kiểm tra của nó phảiđược sửa đổi để sử dụng qua IPv6, để bao gồm các địa chỉ IPv6 128 bitthay vì địa chỉ IPv4 32 bit

4 Độ tin cậy và kiểm soát tắc nghẽn

Giao thức TCP có độ tin cậy cao, các gói tin được gửi bằng TCP sẽđược theo dõi do vậy dữ liệu sẽ không bị mất hoặc hỏng trong quá trìnhvận chuyển Đó là lý do tại sao file tải xuống không bị hỏng ngay cả khimạng có vấn đề Tất nhiên, nếu bên nhận hoàn toàn ngoại tuyến, máy tính

sẽ từ bỏ và hiển thị một thông báo lỗi ghi nó không thể giao tiếp với máychủ lưu trữ từ xa

Kiểm soát luồng đạt được bởi TCP sử dụng trường kích thước cửa sổ.Trường này xác định số byte, bắt đầu bằng byte được xác nhận, mà

Trang 15

người nhận sẵn sàng chấp nhận Nếu người nhận bận hoặc không muốnnhận thêm dữ liệu từ người gửi, giá trị này có thể được đặt thành 0 Ngoàiđiều khiển luồng dựa trên kích thước cửa sổ, tiêu chuẩn TCP hiện tại (RFC

2581 ) sử dụng một cơ chế kiểm soát tắc nghẽn phức tạp bao gồm bốnthuật toán: Slow Start, Congestion Avoidance, Fast Retransmission, và FastRecovery Thuật toán khởi động chậm (Slow Start) được sử dụng bởi TCP

cố gắng tránh tắc nghẽn bằng cách bắt đầu truyền ở tốc độ thấp và nhanhchóng tăng tốc độ cho đến khi có dấu hiệu đầu tiên cho thấy giới hạn băngthông khả dụng đã đạt đến Tránh tắc nghẽn (Congestion Avoidance) tiếptục tăng tốc độ dần dần đến mức có thể chấp nhận được với các tài nguyênbăng thông hiện có Cả khởi động chậm và tránh tắc nghẽn đều sử dụngcách tiếp cận Tăng dần Giảm nhân lên [an Incremental Reduce Multiplying(AIMD)], cho phép tốc độ truyền dữ liệu tăng dần, trong khi mạng vẫn cókhả năng duy trì tốc độ hiện tại (nghĩa là không xảy ra mất gói) Ngay khitốc độ này vượt quá băng thông mạng khả dụng (nghĩa là các gói bị mấtđược phát hiện), người gửi sẽ giảm đáng kể tốc độ dữ liệu Các thuật toántruyền lại nhanh và phục hồi nhanh (Fast retransmission and fast recovery)

đã được giới thiệu để tăng tốc độ phân phối dữ liệu sau khi mất và do đóTCP giảm mạnh tốc độ truyền

Trang 16

Chương 2: Tìm Hiểu Về Ngôn Ngữ Java

1 Khái niệm cơ bản về Java

Java là một ngôn ngữ lập trình được sử dụng rộng rãi để viết mã chocác ứng dụng web Ngôn ngữ này là lựa chọn phổ biến của các nhà pháttriển trong hơn 2 thập niên Hiện nay có hàng triệu ứng dụng Java đangđược sử dụng Java là một ngôn ngữ đa nền tảng, hướng đến đối tượng, lấymạng làm trung tâm và có thể được sử dụng như một nền tảng Đây là mộtngôn ngữ lập trình nhanh, bảo mật, đáng tin cậy dùng để viết mã cho mọithứ từ ứng dụng di động, phần mềm doanh nghiệp cho đến các ứng dụng

dữ liệu lớn và công nghệ phía máy chủ

Vì Java là một ngôn ngữ miễn phí và linh hoạt, nó có thể được dùng

để phát triển các phần mềm cục bộ và phân tán Một số công dụng phổ biếncủa Java bao gồm:

Phát triển trò chơi:

Nhiều trò chơi điện tử, trò chơi máy tính và di động nổi tiếng đượcphát triển bằng Java Ngay cả những trò chơi hiện đại được tích hợp côngnghệ tiên tiến như máy học hay thực tế ảo cũng được phát triển bằng côngnghệ Java

Điện toán đám mây:

Java thường được gọi là ngôn ngữ WORA (Viết một lần, chạy ở mọinơi), khiến nó trở thành ngôn ngữ lý tưởng cho các ứng dụng phi tập trungdựa trên đám mây Các nhà cung cấp đám mây chọn ngôn ngữ Java đểchạy các chương trình trên nhiều nền tảng cơ sở khác nhau

Dữ liệu lớn:

Java được dùng cho các công cụ xử lý dữ liệu có thể làm việc với những tập dữ liệu phức tạp và số lượng dữ liệu thời gian thực khổng lồ

Trang 17

Trí tuệ nhân tạo:

Java là một trung tâm thư viện máy học đồ sộ Sự ổn định và tốc độcủa ngôn ngữ này rất lý tưởng cho việc phát triển ứng dụng trí tuệ nhân tạonhư xử lý ngôn ngữ tự nhiên và học sâu

Internet vạn vật:

Java đã được sử dụng để lập trình các cảm biến và phần cứng trong thiết bị biên có thể kết nối một cách độc lập với Internet

3 Sự lựa chọn phổ biến

Java phổ biến vì nó được thiết kế để có thể dễ dàng sử dụng Một số

lý do mà nhà phát triển tiếp tục chọn Java thay vì những ngôn ngữ lập trìnhkhác bao gồm:

Tài nguyên học tập chất lượng cao

Java đã ra mắt từ lâu nên các nhà phát triển mới có thể tiếp cận rấtnhiều tài nguyên học tập Tài liệu chi tiết, những cuốn sách toàn diện vàcác khóa học sẽ hỗ trợ nhà phát triển trong quá trình học hỏi Ngoài ra,người mới làm quen có thể bắt đầu viết mã bằng Java Cơ bản trước khichuyển sang Java Nâng cao

Các chức năng và thư viện sẵn có

Khi sử dụng Java, nhà phát triển không cần phải viết mọi chức năngmới từ đầu Thay vào đó, Java cung cấp một hệ sinh thái phong phú gồmcác chức năng và thư viện sẵn có để phát triển hàng loạt ứng dụng đa dạng

Sự hỗ trợ tích cực của cộng đồng

Java có rất nhiều người dùng hoạt động và một cộng đồng có thể hỗtrợ nhà phát triển khi họ đối mặt với các thách thức trong việc viết mã.Phần mềm nền tảng Java cũng được duy trì và cập nhật thường xuyên.Công cụ phát triển chất lượng cao Java cung cấp nhiều công cụ khác nhau

để hỗ trợ chỉnh sửa tự động, gỡ lỗi, thử nghiệm, triển khai và

Trang 18

quản lý thay đổi Những công cụ này khiến việc lập trình bằng Java tiết kiệm thời gian và chi phí.

Độc lập với nền tảng

Mã Java có thể chạy trên bất kỳ nền tảng cơ sở nào như Windows,Linux, iOS hoặc Android mà không cần viết lại Đây là điều khiến ngônngữ này trở nên đặc biệt mạnh mẽ trong môi trường hiện nay khi chúng tamuốn chạy ứng dụng trên nhiều thiết bị

Bảo mật

Người dùng có thể tải mã Java không tin cậy từ trên mạng xuống vàchạy mã này trong môi trường bảo mật để nó không thể gây hại Mã khôngtin cậy sẽ không thể lây nhiễm vi-rút cho hệ thống máy chủ và cũng khôngthể đọc hoặc ghi tệp từ ổ cứng Bạn cũng có thể cấu hình nhiều cấp độ vàhạn chế bảo mật trong Java

4 Java hoạt động như thế nào

Mọi ngôn ngữ lập trình đều là phương thức để giao tiếp với máy.Phần cứng của máy chỉ phản hồi thông tin giao tiếp điện tử Các ngôn ngữlập trình cấp độ cao như Java đóng vai trò là cầu nối giữa ngôn ngữ conngười và ngôn ngữ phần cứng Để sử dụng Java, nhà phát triển cần phảihiểu được 2 điều:

Ngôn ngữ và API Java:

Đây là hoạt động giao tiếp front-end giữa nhà phát triển và nền tảng Java

Máy ảo Java:

Đây là hoạt động giao tiếp back-end giữa nền tảng Java và phần cứng cơ sở Hãy cùng xem xét chi tiết từng yếu tố này ở bên dưới

Trang 19

5 Lập trình hướng đối tượng là gì

Lập trình hướng đối tượng (Object Oriented Programing – OOP) làmột phương pháp để thiết kế một chương trình bởi sử dụng các lớp và cácđối tượng

Java là một ngôn ngữ lập trình hướng đối tượng vì vậy nó cũng hỗ trợ các đặc tính của lập trình hướng đối tượng:

Đa hình (Polymorphism) Thừa kế (Inheritance)Đóng gói (Encapsulation)Trừu tượng (Abstraction)

Đối tượng (object):

Đối tượng là một thực thể có trạng thái và hành vi Nó có thể mang tính vật lý hoặc logic

Nếu chúng ta xem xét thực tế chúng ta có thể tìm thấy nhiều đồ vậtxung quanh chúng ta: cái bàn, con chó, con người, v.v… Tất cả các đốitượng này đều có thuộc tính và hành vi

Nếu chúng ta xem xét một con chó, thuộc tính của nó sẽ là – tên,giống, màu sắc, và các hành vi là: sủa, chạy, ăn, … Nếu bạn so sánh cácđối tượng trong phần mềm với một đối tượng trong thế giới thực, chúng sẽ

có đặc điểm rất giống nhau: thuộc tính đối tượng trong phần mềm được lưutrữ trong trường (field) và hành vi được lưu trữ trong phương thức(method)

Chúng ta có thể xem lớp như một khuôn mẫu (template) của đốitượng (Object) Trong đó bao gồm dữ liệu của đối tượng (fields hayproperties) và các phương thức(methods) tác động lên thành phần dữ liệu

đó gọi là các phương thức của lớp

Trang 20

6 Các tính chất của Java

6.1 Tính đóng gói (Encapsulation)

Đóng gói là sự che giấu dữ liệu riêng bên trong mỗi đối tượng củalớp được khai báo và chỉ được truy xuất thông qua hệ thống các phươngthức có sẵn của lớp

Tính đóng gói dùng để bảo vệ dữ liệu, ngăn ngừa việc truy cập vàgán giá trị trực tiếp cho thuộc tính bên trong đối tượng, nhằm bảo vệ tínhchính xác của giá trị thuộc tính

6.2 Tính đa hình (Polymorphism)

Trong từng trường hợp, hoàn cảnh khác nhau thì đối tượng có hìnhthái khác nhau tùy thuộc vào từng ngữ cảnh

6.3 Tính trừu tượng (Abstraction)

Tính trừu tượng trong Java là tính chất không thể hiện cụ thể mà chỉnêu tên vấn đề

Đó là một quá trình che giấu các hoạt động bên trong và chỉ hiển thịnhững tính năng thiết yếu của đối tượng tới người dùng

Ưu điểm khi sử dụng tính trừu tượng để lập trình:

Tính trừu tượng cho phép các lập trình viên loại bỏ tính chất phứctạp của đối tượng bằng cách chỉ đưa ra các thuộc tính và phương thức cầnthiết của đối tượng trong lập trình, cải thiện khả năng bảo trì của hệ thống.Tính trừu tượng giúp chúng ta tập trung vào những cốt lõi cần thiết của đốitượng thay vì quan tâm đến cách nó thực hiện

Tính trừu tượng cung cấp nhiều tính năng mở rộng khi sử dụng kết hợp với tính đa hình và kế thừa trong lập trình hướng đối tượng

Java trừu tượng hóa thông qua các lớp trừu tượng (Abstract class) vàcác giao diện (Interface)

Trang 21

6.4 Tính kế thừa (Inheritance)

Là sự liên quan giữa hai class với nhau, trong đó có class cha(superclass) và class con (subclass) Khi kế thừa class con được hưởng tất

cả các phương thức và thuộc tính của class cha

7 Các loại access modifier trong Java

Default: chỉ truy cập được bởi các lớp trong cùng một package.

Public: Truy cập được ở mọi nơi.

Protected: chỉ truy cập được bởi các lớp trong cùng một package Private: Chỉ gọi được khi ở trong cùng 1 lớp.

Nested class được phân chia thành 2 loại:

Static nested classes: là class được khai báo dạng static bên

Anonymous Classes: là class giống như Inner classes và Local

classes, nó được khai bao bên trong class hoặc method mà không có tên cụthể

Sử dụng inner class để gộp các lớp lại một cách hợp lý để dễ dàng quản lý và bảo trì

Biến được tạo ra cùng với lớp trong qua trình lập trình để mô tả thuộc tính của đối tượng

Trang 22

Biến có 2 loại: Biến cục bộ và biến toàn cục.

Biến cục bộ: là biến được khởi tạo bên trong các phương thức và sẽ

bị huỷ khi phương thức bị huỷ

Biến toàn cục (Instant): là biến nằm bên trong một lớp và bên

ngoài mọi phương thức

Biến static: biến static được khai báo trong một class với từ khóa

‘static’, phía bên ngoài các phương thức, constructor và block

Một ngoại lệ (Exception) trong Java là một vấn đề phát sinh trongquá trình thực thi chương trình Khi xảy ra ngoại lệ, luồng xử lý (flow) bịgián đoạn, chương trình/ứng dụng dừng bất thường Nó là một đối tượngđược ném ra tại Runtime

Figure 1: Exception trong Java

Sự khác nhau giữa “Checked Exceptions” và “Unchecked

Exceptions” trong Java?

Checked Exceptions:

Trang 23

Là một ngoại lệ được kiểm tra và thông báo bởi trình biên dịch tại thời điểm biên dịch.

Checked Exceptions xảy ra tại thời gian biên dịch time Exceptions)

(Compile-Và Checked Exceptions là những Exceptions mà lập trình viênkhông thể lường trước

Trang 24

Figure 2: Các kiểu dữ liệu trong Java

12 Ép kiểu trong Java

Ép kiểu Nới rộng (Widening): Là quá trình làm tròn số từ kiểu dữ

liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn Kiểu biến đổinày không làm mất thông tin Ví dụ chuyển từ int sang float Chuyển kiểuloại này có thế được thực hiện ngầm định bởi trình biên dịch

Figure 3: Ép kiểu Nới rộng trong Java

Trang 25

Ép kiểu Thu hẹp (Narrowwing): Là quá trình làm tròn số từ kiểu

dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn Kiểu biếnđổi này có thể làm mất thông tin như ví dụ ở trên Chuyển kiểu loại nàykhông thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thựchiện chuyển kiểu tường minh

Figure 4: Ép kiểu thu hẹp trong Java

13 Toán tử Instanceof

Toán tử instanceof trong java được sử dụng để kiểm tra một đốitượng có phải là thể hiển của một kiểu dữ liệu cụ thể không (lớp, lớp con,interface)

Instanceof trong java được gọi là toán tử so sánh kiểu vì nó so sánhthể hiện với kiểu dữ liệu Nó trả về giá trị boolean là true hoặc false

Nếu bạn dùng toán tử instanceof với bất kỳ biến nào mà có giá trịnull, giá trị trả về sẽ là false

14 Nạp chồng (Overloading) và ghi đè (Overriding)

Nạp chồng (Overloading): Là 2 phương thức có cùng tên nhưng

khác tham số sẽ trả về kết quả khác nhau

Ghi đè (Overriding): là lớp con cung cấp lại một cài đặt cụ thể cho

một phương thức mà lớp cha đã cung cấp thì đó gọi là ghi đè phương thức

nó được thục hiện dựa trên 2 lớp có tính chất kế thừa

Trang 26

15 Interface

Được xem như là một bản thiết kế, 1 khuôn mẫu của class, chứa cácphương thức trừu tượng không có lệnh thực thi, cung cấp chức năng chocác class implement nó, các class implement chúng sẽ phải override lại cácphương thức có trong interface, vì Java không cho phép đa kế thừa nênInterface là một giải pháp thay thế để có được tính đa kế thừa vì 1 class cóthể implement nhiều interface

Interface như là một bản thiết kế chức năng cho class, và các classimplement chúng sẽ phải override những chức năng đó

16 Abstracts

Abstract class: là một class được khai báo với từ khoá abstract,Abstract class là một lớp cha chứa các biến và phương thức để mô tả thuộctính và hành vi cho tất cả các class có cùng bản chất (Tính năng, hành vi,kiểu, loài)

Abstract class là một class được khai báo với từ khoá abstract, nóchứa các phương thức trừu trượng hoặc các phương thức thường, abstractclass không thể khởi tạo, chỉ có thế được kế thừa bởi các lớp con có sựtương quan, các lớp con kế thừa lớp cha sẽ phải override lại các phươngthức trừu tượng ở trong lớp cha

Bubble Sort (Sắp xếp nổi bọt) là một thuật toán sắp xếp đơn giản,với thao tác cơ bản là so sánh hai phần tử kề nhau, nếu chúng chưa đứngđúng thứ tự thì đổi chỗ (swap)

Có thể tiến hành từ trên xuống (bên trái sang) hoặc từ dưới lên (bên phải sang)

Ngày đăng: 27/12/2022, 05:11

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Giáo trình lập trình mạng – Học Viện Bưu Chính Viễn Thông Sách, tạp chí
Tiêu đề: Giáo trình lập trình mạng
Tác giả: Học Viện Bưu Chính Viễn Thông
[2]. Advanced Network Progaming – Principles and Techniques Sách, tạp chí
Tiêu đề: Advanced Network Programming – Principles and Techniques
[3]. Kỹ Thuật Lập Trình UDP Socket Sách, tạp chí
Tiêu đề: Kỹ Thuật Lập Trình UDP Socket
[4]. Lập Trình Ứng Dụng UDP Socket trên Java Sách, tạp chí
Tiêu đề: Lập Trình Ứng Dụng UDP Socket trên Java
[5]. Lập Trình Socket Phi Kết Nối (UDP).[6]. Fptcloud.com Sách, tạp chí
Tiêu đề: Lập Trình Socket Phi Kết Nối (UDP)

🧩 Sản phẩm bạn có thể quan tâm

w