99
qwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqw ertyuiopasdfghjklzxcvbnmqwe rtyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwert yuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyu iopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyuiop asdfghjklzxcvbnmqwertyuiopa sdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdf Agents on mobile devices Giảng viên: Trần Đình Quế 4/20/2011 Sinh viên: Lê Minh Hải Lớp: D07CNPM2

Lê Minh Hải

Embed Size (px)

Citation preview

Page 1: Lê Minh Hải

qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqw

Agents on mobile devices

Giảng viên: Trần Đình Quế

4/20/2011

Sinh viên: Lê Minh HảiLớp: D07CNPM2

Page 2: Lê Minh Hải

Agents on mobile devices

Contents LỜI MỞ ĐẦU.........................................................................................................5

GIỚI THIỆU CHUNG...........................................................................................7

I. Giới thiệu về Agent................................................................................................8

1. Agent là gì?.......................................................................................................8

2. Đặc điểm của agent..........................................................................................9

3. Các kiểu kiến trúc của agent.........................................................................10

4. Giao tiếp và phối hợp.....................................................................................13

4.1. Giao tiếp....................................................................................................13

4.2. Phối hợp.....................................................................................................13

5. Ngôn ngữ lập trình và công cụ......................................................................14

6. Ứng dụng của Agent......................................................................................16

II. Giới thiệu về Jade Platform................................................................................19

1. Lịch sử của Jade.............................................................................................19

2. Kiến trúc Jade................................................................................................21

3. Tại sao chúng ta nên sử dụng JADE???......................................................24

III. Môi trường di động và các giới hạn.................................................................25

1. Môi trường di động........................................................................................25

2. Các giới hạn của môi trường di động:.........................................................25

IV. Leap Add-on.......................................................................................................26

1. Giới thiệu Leap Add-on.................................................................................26

2. Jade và Jade Leap..........................................................................................33

2.1. Sự khác nhau giữa Jade và j2se của Jade – leap........................................33

2.2. Leap IMTP.................................................................................................34

V. Sử dụng Jade Leap...............................................................................................36

1. Chế độ thực thi container tách riêng............................................................36

2. Mediator(Bộ phận trung gian)......................................................................40

3. Các cách cấu hình split container.................................................................42

Lê Minh Hải_D07CNPM2 Page 2

Page 3: Lê Minh Hải

Agents on mobile devices

4. Building LEAP...............................................................................................43

VI. Công nghệ J2ME................................................................................................45

1. Giới thiệu chung.............................................................................................45

2. Lý do chọn J2ME...........................................................................................46

3. Kiến trúc J2ME..............................................................................................46

3.1. Máy ảo java( hay KVM)............................................................................49

3.2. Tầng CLDC( Connected Limited Device Configuration).........................50

4. Môi trường phát triển J2ME........................................................................52

VII. MIDP( Moble Imfomation Device Profile)......................................................54

1. Giới thiệu........................................................................................................54

2. Bộ khung cho MIDlet.....................................................................................55

3. Trạng thái của MIDlet...................................................................................57

4. Chu kì sống của MIDlet.................................................................................57

VIII. Mobile Agent......................................................................................................58

1. Sự tiến hóa từ các mô hình ứng dụng phân tán..........................................58

2. Các đặc tính của mobile agent......................................................................59

IX. Xây dựng các Agent trên MIDP.......................................................................60

1. Xây dựng MIDlet dựa trên JADE-LEAP....................................................60

2. Thiết lập cấu hình:.........................................................................................61

X. Ứng dụng bán sách trên thiết bị di động...........................................................62

1. Xây dựng ứng dụng.......................................................................................62

2. Hướng dẫn chạy chương trình BookTrading..............................................63

KẾT LUẬN...........................................................................................................71

Tài liệu tham khảo...............................................................................................71

Lê Minh Hải_D07CNPM2 Page 3

Page 4: Lê Minh Hải

Agents on mobile devices

LỜI MỞ ĐẦU

Công nghệ Agent là công nghệ mạnh và tiềm năng trong phát triển các ứng dụng hiện nay và trong tương lai. Nhờ những đặc trưng như tính tự vận hành, tính liên tục, tính cộng tác,tính hướng đích chúng có thể được sử dụng trong nhiều lĩnh vực như Internet, các ứng dụng phân tán, thương mại điện tử. Trong đó hệ đa Agent được phát triển trên nền JADE (Java Agent Development Framework), một khung làm việc được thực thi hoàn toàn trong ngôn ngữ Java. Nền tảng Agent có thể được phân tán tới nhiều máy tính khác nhau ( chạy các hệ điều hành khác nhau), và các cấu hình có thể được điều khiển thông qua giao diện người dùng từ xa. Agent là 1 lĩnh vực quan trọng và có ứng dụng lớn trong trí tuệ nhân tạo.

Những thiết bị với khả năng kết nối không dây (GPRS, UMTS, WLAN) như điện thoại di động và PDA ngày nay đã trở nên vô cùng phổ biến. Chúng ngày càng phát triển về cả nguồn năng lượng cũng như tài nguyên của máy (khả năng xử lý, bộ nhớ, các cảm biến, ...). Điều đó tạo thuận lợi cho chúng ta trong việc tích hợp môi trường có dây và không dây vào một mạng lưới chung. Để phục vụ tốt nhất cho công việc của con người, ngày nay chúng ta cần phải triển khai các ứng dụng phân tán, một phần trên mạng cố định (như máy chủ, máy trạm hay các máy tính cá nhân) và một phần trên các thiết bị di động.

Mobile agents là một trong những hướng nghiên cứu thu hút nhiều sự quan tâm nhất từ những năm 90s đến nay với những đặc điểm rất thích hợp cho việc phát triển các ứng dụng phân tán. Trong bài này, chúng ta điểm lại những khái niệm cơ bản về mobile agent đồng thời đề cập đến những loại ứng dụng phù hợp với mô hình mobile agents đã và đang được nghiên cứu và phát triển trên thế giới. Thông qua việc xem xét các hệ thống hỗ trợ phát triển ứng dụng dựa trên mobile agents, bài báo cũng bàn tới đến những khó khăn và thách thức cần phải giải quyết để có thể đưa mobile agents vào ứng dụng trong thực tế.

Em nhận thấy đề tài phát triển dựa trên Agent trên các thiết bị di động là một đề tài hay và có tính ứng dụng cao. Tiểu luận này sẽ tìm hiểu các vấn đề trong việc phát triển các ứng dụng trên thiết bị di động cũng như phát triển dựa trên Agent trên thiết bị di động. Bên cạnh đó, bài viết cũng đưa ra một ví dụ cụ thể để làm rõ hơn những vấn đề trên.

Từ khóa: Mobile agent, LEAP, MIDPlet , JADE…

Lê Minh Hải_D07CNPM2 Page 4

Page 5: Lê Minh Hải

Agents on mobile devices

GIỚI THIỆU CHUNG

Sự phát triển không ngừng của các kỹ thuật tiên tiến về máy tính, đặc biệt là các giải pháp mạng, cùng với sự bùng nổ nhanh chóng các dịch vụ và nguồn thông tin trên mạng đã làm gia tăng số người sử dụng Internet đến con số hàng trăm triệu (theo International Data Corp, tính đến cuối năm 2002 sẽ có hơn 600 triệu người trên toàn thế giới kết nối Internet). Các đặc điểm của nguồn thông tin, tổ chức mạng, cũng như việc khai thác, xử lý thông tin ngày càng trở nên phức tạp và đa dạng hơn, có thể kể đến các khuynh hướng chính yếu [KOT-99]:

• Các thiết bị di động (Mobile devices): Việc cung cấp các phần mềm, các dịch vụ hỗ trợ hiệu quả cho lớp thiết bị di động (laptop, PDAs đến điện thoại di động hay sổ tay điện tử...) này vẫn đang phải đối mặt với nhiều khó khăn vì các thiết bị di động thường có tài nguyên hạn hep, và thường dựa trên các kết nối với băng thông thấp, độ trễ cao của đường điện thoại, hay mạng không dây.

• Người dùng di động (Mobile users): Ngày nay người dùng thường có nhu cầu truy cập vào máy tính của mình, tài khoản của mình từ bất cứ đâu, vì thế việc hỗ trợ kết nối ở mọi nơi, mọi lúc và trên mọi thiết bị là một thách thức được đặt ra.

• Nhu cầu chuyên biệt hoá: Việc khai thác thông tin, sử dụng dịch vụ đã không còn thỏa mãn với các cơ chế thụ động, mà người dùng thường có khuynh hướng muốn chuyên biệt hoá nhu cầu của mình một cách chủ động. Internet là cơ sở để thực hiện mong muốn này, vấn đề còn lại là khả năng hỗ trợ chuyên biệt hoá của các ứng dụng mạng dành cho người dùng.

• Nguồn tin đa dạng, khối lượng cực lớn: Đã xuất hiện sự bùng nổ thông tin trên mạng với sự xuất hiện của nhiều kho dữ liệu khổng lồ. Các kho dữ liệu này lại được cung cấp từ nhiều nguồn nên thường không đồng nhất về tổ chức, đây sẽ lại là một khó khăn mới đối với người dùng khi truy vấn.

• Gia tăng sử dụng mạng cục bộ: Việc các mạng Intranet được xây dựng phổ biến là một điều kiện tốt để triển khai các kỹ thuật mới trong việc xây dựng các ứng dụng mạng, vì Intranet cho phép việc thiết lập an toàn hệ thống dễ dàng hơn trong một tập hợp mang tính cộng tác và tin cậy.

• Môi trường không đồng nhất: Khi kết nối các máy tính, các mạng cục bộ vào Internet, các ứng dụng và người dùng phải đối mặt với một môi trường không đồng nhất cả về phần cứng, lẫn về kiến trúc, hệ điều

Lê Minh Hải_D07CNPM2 Page 5

Page 6: Lê Minh Hải

Agents on mobile devices

hành…Và bài toán tương thích, dễ mang chuyển sẽ là vấn đề cần giải quyết ở đây.

• Sự khập khiễng về đường truyền: Mặc dù ngành viễn thông đã đạt đến những tiến bộ đáng kinh ngạc, và cho ra đời các loại cáp quang với tốc độ truyền tải nhanh đáng kể, đa số người dùng vẫn bị giới hạn với các thiết bị kết nối như modem hay các đường truyền băng thông thấp với mạng không dây.

Với tất cả các đặc điểm trên đây, các ứng dụng phân tán phát triển theo mô hình client-server truyền thống tỏ ra một số bất lợi vì đòi hỏi làm việc đồng bộ, đòi hỏi đường truyền băng thông cao, độ trễ thấp và cuối cùng là các dịch vụ thiếu linh động, khó thay đổi hay bổ sung. Mobile Agent là một mô hình trong đó các tiến trình - được gọi là agent - có tính tự trị và khả năng di động từ máy chủ này sang máy chủ khác để hoàn tất tác vụ. Ý tưởng chủ đạo của mobile agent là di chuyển xử lý đến gần nguồn dữ liệu, nhờ đó có thể giảm tải mạng, khắc phục tình trạng trễ, hỗ trợ xử lý không đồng bộ và tạo ra sự tưng thích mạnh trên các môi trường không đồng nhất [LAN-99]. Mobile agent với các ưu điểm này hứa hẹn một giải pháp mới, hiệu quả và dễ dàng hơn trong việc phát triển ứng dụng phân tán.

Trong bài này này em sẽ giới thiệu các khái niệm cơ bản về mobile agent trong phần tiếp theo. Phần 9 sẽ trình bày về các lợi thế của các ứng dụng dựa trên mobile agents và các lĩnh vực ứng dụng đầy tiềm năng của mobile agents. Phần 10 trình bày các khảo sát về một số môi trường dựa trên Java hỗ trợ phát triển ứng dụng mobile agents. Phần thảo luận sẽ bàn đến các vấn đề mở đang được tiếp tục nghiên cứu trong lĩnh vực hiện nay về mobile agents. Cuối cùng là kết luận.

Lê Minh Hải_D07CNPM2 Page 6

Page 7: Lê Minh Hải

Agents on mobile devices

Thuật ngữ:

LEAP : Lightweight Extensible Agent Platform IMTP : Internal Message Transport Protocol CLDC (Connected Limited Device Configuration) //Cấu hình thiết bị kết nối

giới hạn CDC (Connected Device Configuration) //Cấu hình thiêt bị kết nối

CLDC CDC

RAM 32 KB – 512 KB 256 KB +

ROM 128 KB – 512 KB 512 KB +

Nguồn năng lượng Có giới hạn Không giới hạn

Kết nối mạng Chậm Nhanh

MIDP : Mobile Information Device Profile JICP : Jade Inter Container Protocol ICP : Internal Communication Peer SSL : Secure Sockets Layer MSA : Mobile Service Architecture WMA : Wireless Messaging API OTA : Over The Air ….

Lê Minh Hải_D07CNPM2 Page 7

Page 8: Lê Minh Hải

Agents on mobile devices

I. Giới thiệu về Agent 1. Agent là gì?

Thuật ngữ “agent” hay agent phần mềm, đã được sử dụng rộng rãi và xuất hiện trong nhiều công nghệ, như trong trí tuệ nhân tạo, cơ sở dữ liệu, các tài liệu về hệ điều hành, và mạng máy tính. Mặc dù không có định nghĩa riêng về agent( như trong Geneseth and Ketchpel[1994], Wooldridge and Jennings[1995], Russel and Norvig[2003]) nhưng tất cả các định nghĩa đều thống nhất rằng một agent, về bản chất, là một phần mềm máy tính đăc biệt có thể tự chủ cung cấp một interface có khả năng tương thích với một hệ thống bất kì và/hoặc cư xử như là một agent con người, làm việc cho một số khách hàng trong việc theo đuổi các vấn đề của riêng mình

Một hệ thống agent có thể chỉ cần dựa trên một agent đơn lẻ để làm việc trong một môi trường và tương tác với các user của nó. Tuy nhiên hiện nay các hệ thống agent bao gồm nhiều agent. Những hệ thống đa agent này (MAS) có thể mô hình hóa những hệ thống phức tạp và các agent của chúng có thể có các mục tiêu chung hoặc mâu thuẫn nhau. Những agent này có thể tương tác với agent khác một cách gián tiếp (bằng cách tác động lên môi trường) hoặc trực tiếp (thông qua giao tiếp và thương lượng). Các agent có thể quyết định hợp tác để cùng có lợi hoặc có thể cạnh tranh để phục vụ cho mối quan tâm của mình.

2. Đặc điểm của agent

Tính tự chủ: hoạt động mà không có sự can thiệp trực tiếp của con người hoặc những hệ thống khác và có quyền kiểm soát được hành động và trạng thái bên trong chính nó.

Lê Minh Hải_D07CNPM2 Page 8

Page 9: Lê Minh Hải

Agents on mobile devices

Tính xã hội: tương tác với con người hoặc các agent khác để hoàn thành nhiệm vụ của mình.

Tính phản ứng: nhận thức được môi trường và đáp ứng một cách kịp thời với những thay đổi xảy ra trong môi trường.

Tính hướng đích: không chỉ đơn giản là hoạt động để phản ứng với môi trường của nó mà còn thể hiện hoạt động hướng đích một cách chủ động.

Ngoài các đặc tính quan trọng trên, agent còn có thể có các đặc tính sau:

Tính di động: khả năng di chuyển giữa các node trong một mạng máy tính.

Tính trung thực: cung cấp sự thật mà sẽ không cố ý truyền thông tin sai lệch.

Tính tốt bụng: luôn cố gắng thực hiện những gì được yêu cầu.

Tính sáng suốt: luôn hoạt động nhằm đạt được mục tiêu của mình và không bao giờ ngăn cản việc đạt được mục tiêu của mình.

3. Các kiểu kiến trúc của agent

Các kiến trúc agent có thể được chia thành 4 nhóm chính:

Kiến trúc dựa trên logic: lấy nền tảng từ kỹ thuật dựa trên tri thức truyền thống mà trong đó, môi trường được thể hiện và vận hành một cách tượng trưng bằng cách sử dụng các cơ chế lập luân. Ưu điểm của phương pháp này là tri thức của con người là các biểu tượng vì thế mà việc mã hóa trở nên dễ dàng hơn, và chúng có thể được xây dựng để hoàn chỉnh về mặt tính toán, làm cho con người dễ dàng hơn trong việc hiểu logic. Nhược điểm là rất khó để biên dịch thế giới thực thành những mô tả hình tượng một cách chính xác và đầy đủ, và việc biểu diễn và xử lý dưới dạng các kí hiệu có thể mất nhiều thời gian để có được kết quả và thường là được đưa ra quá muộn. không còn có ích nữa.

Kiến trúc có tính phản ứng (reactive): thực thi quá trình đưa ra quyết định khi ánh xạ trực tiếp tình huống sang hành động và được dựa trên một cơ chế kích thích – phản ứng được tạo ra bởi dữ liệu của thiết bị cảm biến. Không giống như kiến trúc dựa trên logic, chúng không có bất kì mô hình tượng trừng nào. Kiến trúc co tính phản ứng nổi tiếng là kiến trúc gộp của Brook(Brook,1991). Những ý tưởng chính mà dựa trên đó Brooks đã tìm ra kiến trúc này:

Lê Minh Hải_D07CNPM2 Page 9

Page 10: Lê Minh Hải

Agents on mobile devices

Một cách ứng xử thông minh có thể được tạo ra mà không cần biểu diễn rõ rang và lập luận trừu tượng được cung cấp bởi các kỹ thuật của trí tuệ nhân tạo về biểu tượng

Thông minh là một tính chất nổi bật của những hệ thống phức tạp.

Kiến trúc gộp xác định các tầng của các máy hữu hạn trạng thái – những máy được kết nối với thiết bị cảm biến – những thiết bị truyền thông tin theo thời gian thực (một ví dụ của kiến trúc gộp được thể hiện trong hình 2.1). Các tầng này tạo thành sự phân cấp các hành vi,trong đó, mức độ thấp nhất được điều khiển ít hơn so với mức độ cao hơn trong ngăn xếp, vì thế, việc ra quyết định đạt được đưa ra thông qua những hành vi hướng đích. Những agent được thiết kế gộp hiểu được điều kiện và hành động, nhưng không đưa ra được kế hoạch. Điểm mạnh của phương pháp tiếp cận này là nó sẽ thực thi tốt hơn (ví dụ: phản ứng nhanh hơn nhưng không suy luận tốt hơn) trong những môi trường động, cũng như chúng thường được thiết kế đơn giản hơn so với những agent dựa trên logic. Tuy nhiên, trên thực tế nhược điểm là những agent có khả năng phản ứng không áp dụng những mô hình là kết quả của môi trường của chúng. Do đó, các dữ liệu của sensor có thể không đủ để xác định một hành động thích hợp và thiếu các trạng thái của agent khiến cho hầu như không thể thiết kế các agent có thể học hỏi từ kinh nghiệm. Hơn nữa, những hành động của agent dựa trên cơ sở của sự tương tác của những hành vi khác nhau khiến cho các kỹ sư rất khó có thể thiết kế các agent có khả năng phản ứng để thi hành những tác vụ đặc biệt khi những agent phải được nhận ra thông qua rất nhiều hành vi.

Các kiến trúc BDI (Belief, desire, intention): là những kiến trúc agent phổ biến nhất (Rao and Georgeff, 1995). Chúng có nguồn gốc triết học và đề xuất một lý thuyết logic. Lý thuyết này đưa những quan điểm về tinh thần của niềm tin, mong muốn và dự định sử dụng logic hình thức. Một trong những kiến trúc

Lê Minh Hải_D07CNPM2 Page 10

Page 11: Lê Minh Hải

Agents on mobile devices

BDI nổi tiếng nhất là hệ thống suy luận theo thủ tục (PRS – Procedural Reasoning System) (Georgeff and Lansky, 1987). Kiến trúc này dựa trên 4 cấu trúc dữ liệu chính: beliefs, desires, intentions và plans, và một bộ phận phiên dịch (xem hình 2.2).

Trong hệ thống PRS, beliefs biểu diễn những thông tin mà agent có về môi trường của nó, có thể không đầy đủ hoặc không chính xác. Desires biểu diễn những tác vụ được phân công cho agent và tương ứng là những mục tiêu, hoặc là mục đích mà nó sẽ hoàn thành. Intentions thể hiện những mong muốn mà agent cần phải đạt được. Cuối cùng, plans chỉ rõ một vài quá trình của hành động mà agent sẽ phải làm để đạt được mục đích. Bốn cấu trúc dữ liệu này được quản lý bởi bộ phận phiên dịch agent, cái mà chịu trách nhiệm cập nhật belief từ những quan sát từ môi trường, sinh ra những desire (tác vụ) mới dựa trên cơ sở của các belief mới, và lựa chọn trong tập những desire hiện tại một vài tập con để hoạt động, chúng được gọi là intentions. Cuối cùng, bộ phận phiên dịch phải lựa chọn một hành động để thực thi dựa trên cơ sở của những intention hiện tại của agent và tri trức về mặt thủ tục.

Kiến trúc phân lớp (layered architecture) (lai) cho phép hành vi của agent vừa mang tính phản ứng vừa có tính thận trọng. Để có được sự linh hoạt này, các hệ thống con được sắp xếp thành các tầng của một hệ thống phân cấp được sử dụng để thích ứng với cả hai loại hành vi của agent. Có hai loại luồng điều khiển trong môt kiến trúc phân lớp: phân lớp ngang (Ferguson, 1991) và phân lớp dọc (Muller et al, 1995). Trong phân lớp nằm ngang, các lớp kết nối một cách trực tiếp với đầu vào của sensor và đầu ra của hành động (xem hình 2.3), về cơ bản là có mỗi tầng hoạt động giống như một agent. Điểm mạnh chính của cách phân lớp này là sự dễ dàng trong thiết kế bởi vì nếu agent cần n loại hành vi khác nhau, thì kiến trúc chỉ yêu cầu n tầng. Tuy nhiên, bởi vì mỗi tầng đều bị

Lê Minh Hải_D07CNPM2 Page 11

Page 12: Lê Minh Hải

Agents on mobile devices

ảnh hưởng bởi agent, nên không cần có một chức năng trung gian hòa giải để kiểm soát các hành động. Sự phức tạp khác là một lượng lớn các tương tác có thể xảy ra giữa những tầng ngang - mn (với m là số lượng hành động tại mỗi tầng). Một kiến trúc phân lớp dọc loại trừ một số vấn đề trên vì đầu vào của sensor và đầu ra của hành động được giải quyết phần lớn tại mỗi tầng. Kiến trúc phân lớp dọc có thể được chia nhỏ thành những kiến trúc điều khiển một chiều và hai chiều. Trong kiến trúc một chiều, luồng điều khiển đi từ tầng đầu, tầng nhận dữ liệu từ các sensor, xuống đến tầng cuối, tầng sinh ra đầu ra của hành động (xem hình 2.3). Trong kiến trúc hai chiều, luồng dữ liệu đi lên xuyên qua các tầng và điều khiển, tiếp đó lại có luồng dữ liệu trở về theo thứ tự ngược lại (xem hình 2.3). Điểm mạnh chủ yếu của kiến trúc phân lớp dọc là sự tương tác giữa các tầng được làm giảm đáng kể còn m2(n-1). Nhược điểm là kiến trúc này phụ thuộc vào tất cả các tầng và không chấp nhận lỗi, vì thế nếu một tầng lỗi, toàn bộ hệ thống sẽ lỗi.

4. Giao tiếp và phối hợp4.1. Giao tiếp

- Trong thực tế, các agent cần có khả năng giao tiếp với người dùng, với tài nguyên hệ thống, và với agent khác nếu chúng cần hợp tác, cộng tác, đàm phán…

Lê Minh Hải_D07CNPM2 Page 12

Page 13: Lê Minh Hải

Agents on mobile devices

- Các agent tương tác với agent khác bằng cách sử dụng một vài ngôn ngữ giao tiếp đặc biệt, được gọi là những ngôn ngữ giao tiếp agent, dựa trên lý thuyết lời nói hành động (Searle, 1969) và cung cấp sự phân tách giữa hành động giao tiếp và ngôn ngữ nội dung.

- Ngôn ngữ giao tiếp agent đầu tiên với một sự bao quát rộng là KQML (Mayfield et al, 1996). KQML được phát triển vào đầu những năm 1990 là một phần của ARPA Knowledge Sharing Effort của chính phủ Mỹ.

- Hiện nay, ngôn ngữ giao tiếp agent được nghiên cứu và sử dụng nhiều nhất là FIPA ACL, nó kết hợp nhiều khía cạnh của KQML (Labrou et al, 1999). Đặc điểm chính của FIPA ACL là khả năng sử dụng những ngôn ngữ nội dung khác nhau và sự quản lý các cuộc hội thoại thông quan các giao thức tương tác được xác định trước.

4.2. Phối hợp

- Phối hợp là một tiến trình mà trong đó, các agent tham gia để đảm bảo rằng một cộng đồng các agent đơn lẻ hành động một cách chặt chẽ (Nwana et al, 1996). Có khá nhiều lý do lý giải tại sao nhiều agent cần phối hợp với nhau, bao gồm:

• Các mục đích của các agent có thể gây ra sự xung đột giữa các hành động của agent

• Các mục đích của các agent có thể phụ thuộc lẫn nhau• Các agent có thể có những khả năng và tri thức khác nhau• Các mục đích của các agent có thể nhanh chóng đạt được nếu có

sự cộng tác giữa các agent khác nhau.

- Sự phối hợp giữa các agent có thể được điều khiển với nhiều phương pháp tiếp cận khác nhau bao gồm cơ cấu tổ chức (Organizational structuring), lập hợp đồng (contracting), lập kế hoạch và đàm phán đa agent (multi-agent planning and negotiation).

5. Ngôn ngữ lập trình và công cụ

Ngôn ngữ lập trình, nền tảng và các công cụ phát triển của hệ thống đa agent là thành phần quan trọng mà có thể ảnh hưởng đến việc sử dụng rộng rãi các công nghệ agent. Trong thực tế, sự thành công của hệ thống đa agent phần lớn là phụ thuộc vào sự sẵn có của công nghệ thích hợp (tức là ngôn ngữ lập trình, thư viện phần mềm và các công cụ phát triển) để cho phép thực thi các khái niệm và các kỹ thuật đã hình thành cơ sở cho hệ thống đa Agent.

Lê Minh Hải_D07CNPM2 Page 13

Page 14: Lê Minh Hải

Agents on mobile devices

Hệ thống agent có thể được cài đặt bằng cách sử dụng một loại ngôn ngữ lập trình nào đó. Cụ thể, ngôn ngữ hướng đối tượng được coi là một phương tiện phù hợp, vì khái niệm về agent không khác nhiều so với từ khái niệm đối tượng. Trong thực tế, các agent chia sẻ nhiều tính chất với các đối tượng như đóng gói (encapsulation), và đôi khi có cả kế thừa (inherition) và truyền thông điệp (message passing). Tuy nhiên, các agent cũng khác với các đối tượng trong một số điểm chính: chúng có tính tự trị (autonomous) (nghĩa là chúng tự quyết thực hiện hay không thực hiện một hành động theo yêu cầu từ các agent khác); chúng có thể có hành vi linh hoạt; và mỗi agent của một hệ thống có thể điều khiển luồng của riêng mình.

Ngôn ngữ lập trình hướng Agent là một loại ngôn ngữ lập trình mới. Nó tập trung vào những đặc điểm chính của hệ thống đa agent. Tối thiểu, một ngôn ngữ lập trình hướng agent phải bao gồm một vài cấu trúc tương ứng với một agent, nhưng nhiều ngôn ngữ lập trình cũng cung cấp các cơ chế để hỗ trợ các thuộc tính bổ sung của agent như niềm tin (beliefs), mục đích (goals), kế hoạch (plans), vai trò (roles) và quy tắc (norms). Ngày nay, một số ngôn ngữ hướng agent đã xuất hiện (Bordinietal,2006).

Một số được thiết kế từ đầu, trực tiếp mã hóa một số lý thuyết về agent, trong khi một số khác mở rộng ngôn ngữ đã có để phù hợp với tính chất riêng biệt của agent. Ngoài ra, một số ngôn ngữ mang quan điểm lập trình hoàn toàn có tính chất khai báo hoặc có tính chất bắt buộc (FLUX (Thielscher, 2005) và ngôn ngữ Jack Agent (Winikoff, 2005) là những ví dụ điển hình). Các ngôn ngữ lai khác kết hợp cả tính chất khai báo lẫn tính chất bắt buộc của ngôn ngữ khác (3APL (Dastani et al., 2005) và Jason (Bordini et al. 2005) là những ví dụ của loại này). Ngoài ra, một số các ngôn ngữ này (ví dụ như 3APL và ngôn ngữ Jack Agent) còn cung cấp một môi trường phát triển tích hợp để đơn giản hóa việc cài đặt các hệ thống dựa trên agent bằng cách tự động mã hóa một số nhiệm vụ lập trình tẻ nhạt như làm lại (refactoring) và thử nghiệm (testing).

Platform và framework là những phương tiện chính cho phép phát triển các hệ thống đa agent. Hầu hết chún cung cấp một phương tiện để triển khai nhiều hệ thống agent trên các phần cứng và hệ thống điều hành khác nhau, thường là cung cấp một vi chương trình (midleware) để hỗ trợ thực thi và hoạt động cần thiết của chúng như giao tiếp (communication) và phối hợp (coordination). Một số các platform và framwork có mục đích chung là cung cấp các chức năng theo các chuẩn FIPA để hỗ trợ cộng tác giữa nhiều hệ thống agent khác nhau. Ngoài ra, một số cũng có mục tiêu hỗ trợ các loại phần cứng, mạng truyền thông và kiến trúc agent (ví dụ như JADE (Bellifemine et al, 2001.)), và một số hỗ trợ các loại agent đặc biệt (ví dụ như các agent điện thoại di động (Lange và Oshima, 1998)).

Lê Minh Hải_D07CNPM2 Page 14

Page 15: Lê Minh Hải

Agents on mobile devices

Một đặc điểm quan trọng mà các hệ thống đa agent nên cung cấp là khả năng hỗ trợ sự tương tác giữa các hệ thống phần mềm kế thừa từ các hệ thống trước. Do đó, sự sẵn sàng tích hợp các công cụ phần mềm với các công nghệ khác có thể là chìa khóa dẫn đến thành công của chúng. Internet là một trong các lĩnh vực ứng dụng quan trọng nhất và phương tiện truyền thông quan trọng nhất mà nhiều hệ thống đa agent có thể sử dụng để cung cấp khả năng tương tác giữa các hệ thống phần mềm kế thừa, do vậy, rất nhiều công trình nghiên cứu và phát triển hiện nay hướng đến việc cung cấp các kỹ thuật và công cụ phần mềm thích hợp cho việc tích hợp các hệ thống đa agent với các công nghệ web như Web Service và Semantic Web.

Web Service là một công nghệ làm thay đổi Internet một cách nhanh chóng thông qua việc cung cấp một mô hình lập trình nửa ngôn ngữ, nửa môi trường (language-neurtral, environment-neutral) nhằm sử dụng Web để tích hợp các ứng dụng cả trong và ngoài doanh nghiệp (Tsalgatidou và Pilioura, 2002; Weikum, 2001). Nhiều công trình quan trọng khác đã đề xuất việc tích hợp giữa các công nghệ agent và các công nghệ Web Service thành một phương tiện lý tưởng hỗ trợ khả năng tương tác của cả hai và để cung cấp nhiều dịch vụ phức tạp hơn. Đặc biệt, các agent đã được chứng minh rất hữu ích khi hành động trực tiếp như là Web Service, cung cấp các dịch vụ dựa trên agent để cho các Web Service sử dụng, và phối hợp một cách động việc thực thi của một tập các Web Service bằng cách cung cấp các dịch vụ mới là gộp của các dịch vụ khác (Buhler và Vidal, 2005; Greenwood et al, 2005.; Negri et al, 2006.)

Semantic Web là một phần mở rộng của Web hiện tại, trong đó thông tin có định nghĩa rõ ràng, do đó cho phép sự phối hợp giữa máy tính và con người tốt hơn. Đặc biệt, Semantic Web cung cấp một cơ sở hạ tầng và một tập các công nghệ cho phép không chỉ các trang Web, mà còn cơ sở dữ liệu, dịch vụ, chương trình, cảm biến, thiết bị cá nhân và thậm chí cả hộ gia đình vừa lấy dữ liệu vừa tạo ra dữ liệu trên Web (Hendler et al, 2002). Nhiều tổ chức khác nhau đang làm việc dưới sự cài đặt của các hệ thống đa agent nơi công nghệ Semantic Web được sử dụng để hỗ trợ các agent cả trong việc tìm kiếm, chọn lọc, xử lý thông tin lẫn trong các việc kết hợp các quy trình (Labrou, 2002; Sycara et al, 2003.; Silva et al, 2003).

6. Ứng dụng của Agent

Các hệ thống đa agent đang ngày càng được sử dụng rộng rãi trong rất nhiều các ứng dụng, từ các hệ thống tương đối nhỏ để hỗ trợ cá nhân đến các hệ thống mở, phức tạp, và đặc biệt quan trọng dành cho các ứng dụng công nghiệp.

Ứng dụng công nghiệp là những ứng dụng rất quan trọng cho các hệ thống đa agent bởi vì chúng là nơi mà công nghệ đa agent đầu tiên được thử nghiệm và chứng minh tiềm năng ban đầu của nó. Các ví dụ về việc áp dụng các hệ thống đa agent trong

Lê Minh Hải_D07CNPM2 Page 15

Page 16: Lê Minh Hải

Agents on mobile devices

lĩnh vực công nghiệp bao gồm kiểm soát tiến trình (Jenning, 1994), chuẩn đoán hệ thống (albert, 2003), sản xuất (Parunak, 1987), dịch vụ vận tải (Neagu, 2006), và quản lý mạng (Greenwood, 2006).

Một trong những lĩnh vực ứng dụng quan trọng nhất của hệ thống đa agent là quản lý thông tin. Cụ thể, Internet đã chứng tỏ là một miền lý tưởng cho các hệ thống đa agent nhờ bản chất phân tán tự nhiên của nó và khối lượng thông tin sẵn có đang ngày càng tăng lên mạnh mẽ. Ví dụ, các agent có thể được sử dụng để tìm kiếm và lọc thông tin. Internet đã thúc đẩy việc sử dụng công nghệ agent trong lĩnh vực quản lý tiến trình nghiệp vụ và thương mại điện tử. Trong thực tế, trước sự gia tăng của thương mại điện tử, việc quản lý tiến trình nghiệp vụ đã gần như được điều khiển bởi các tương tác của con người: con người quyết định khi nào mua hàng hóa, họ có khả năng chi trả bao nhiêu...Giờ đây thương mại điện tử và tiên trình nghiệp vụ được tự động hóa đang ngày càng đóng vai trò then chốt trong nhiều tổ chức bởi vì chúng cung cấp những cơ hội để cải thiện đáng kể cách thức mà các thực thể khác nhau tham gia vào tương tác của tiến trình nghiệp vụ. Trong kịch bản này các hệ thống đa agent đã chứng tỏ nó vừa phù hợp cho việc mô hình hóa và thiết kế các hệ thống quản lý tiến trình nghiệp vụ, vừa là các thành phần quan trọng cho tự động hóa của một số hoặc tất cả các bước của các tiến trình này.

Giao thông và vận tải cũng là một lĩnh vực quan trọng, nơi mà bản chất phân tán của các tiến trình giao thông và vận tải và sự độc lập mạnh mẽ giữa các thực thể có liên quan trong các tiến trình đó làm cho các hệ thống đa agent trở thành một công cụ

Lê Minh Hải_D07CNPM2 Page 16

Page 17: Lê Minh Hải

Agents on mobile devices

có giá trị cho việc thực hiện các giải pháp thương mại thực sự có hiệu quả (Neagu et al., 2006).

Một số lĩnh vực đã được giải quyết như OASIS cung cấp bằng chứng mạnh mẽ rằng nhiều hệ thống đa agent là phương tiện lý tưởng cho các hệ thống mở, phức tạp và đặc biệt quan trọng. OASIS là một hệ thống điều khiển không lưu phức tạp dự trên mô hình agent BDI, được triển khai và được sử dụng thành công tại sân bay Sydney ở Australia.

Các hệ thống viễn thông là một lĩnh vực ứng dụng mà các hệ đa agent đã được sử dụng thành công. Trong thực tế, các hệ thống viễn thông là các mạng lưới lớn và phân tán gồm các thành phần được kết nối với nhau. Những thành phần đó cần phải được theo dõi và quản lý trong thời gian thực. Các hệ thống viễn thông cũng hình thành nên cơ sở của một thị trường cạnh tranh, nơi các công ty viễn thông và các nhà cung cấp dịch vụ nhắm đến để phân biệt chính họ với đối thủ cạnh tranh của họ bằng cách cung cấp các dịch vụ tốt hơn, nhanh hơn hoặc đáng tin cậy hơn. Vì vậy, các hệ đa agent được sử dụng cả trong việc quản lý các mạng lưới phân tán lẫn cho việc cài đặt các dịch vụ viễn thông tiên tiến (Fricke et al., 2001; Hayzelden and Bourne, 2001; Greenwood et al., 2006).

Nhiều hệ thống đa robot cũng sử dụng các kỹ thuật lập kế hoạch phân tán và đa agent để phối hợp các robot khác nhau. FIRE phối hợp các hành động của nhiều robot ở nhiều mức trừu tượng hóa. Tầng lập kế hoạch trên cùng sử dụng một chiến lược dựa trên thị trường để phân phối các công việc giữa các robot, trong đó thời gian robot di chuyển là thước đo chính để tính chi phí. MISUS các phối hợp các kỹ thuật từ việc lập kế hoạch và lập lịch với học máy để thực hiện việc thăm dò có tính khoa học một cách tự chủ (Estlin et al., 2005). Kỹ thuật lập kế hoạch và lập lịch phân tán được sử dụng để tạo ra các kế hoạch cộng tác nhiều lần (multi-rover), việc thực thi kế hoạch giám sát có hiệu quả và thực hiện làm lại kế hoạch khi cần thiết. Các thành phần thuộc về học máy được sử dụng để suy diễn các quan hệ giữa những dữ liệu thu thập được và lựa chọn các hoạt động khoa học mới. Hơn nữa, những hệ thống này có thể suy luận về những mục đích phụ thuộc lẫn nhau để thực hiện tối ưu hóa kế hoạch và để tăng giá trị của dữ liệu thu thập được.

Lê Minh Hải_D07CNPM2 Page 17

Page 18: Lê Minh Hải

Agents on mobile devices

Vài ứng dụng đa agent đáng quan tâm khác có thể được tìm thấy trong hệ thống chăm sóc sức khỏe (Moreno và Nealon, 2003). Trong thực tế, các hệ thống đa agent đã được đề xuất để giải quyết với nhiều loại vấn đề khác nhau trong lĩnh vực chăm sóc sưc khỏe, bao gồm lập kế hoạch và quản lý bệnh nhân, chăm sóc sức khỏe người cao tuổi và cộng đồng, truy cập và quản lý thông tin y tế và hỗ trợ quyết định. Một vài ứng dụng đã cài đặt cho thấy rằng hệ thống đa agent có thể là giải pháp đúng đắn cho việc xây dựng các hệ thống hỗ trợ quyết định y học (Hudson và Cohen, 2002) và cải thiện sự phối hợp giữa các chuyên gia khác nhau tham gia vào quá trình chăm sóc sức khỏe (Lanzola và Boley, 2002).

II. Giới thiệu v ề Jade Platform 1. Lịch sử của Jade

Phần mềm được phát triển đầu tiên theo cấu trúc JADE được bắt đầu bởi hãng Telecom Italia-CSELT vào cuối năm 1998, với nhu cầu cần thiết của hãng để được công nhận bởi chuẩn FIPA.

Ban đầu, hãng không được kỳ vọng để đạt được mục tiêu của phát triển một nền tảng này. Tuy nhiên, nhờ có sự hỗ trợ tài chính một phần của Ủy ban châu Âu (dự án FACTS , ACTS AC317), cùng với thiện chí và khả năng của nhóm phát triển (tại thời

Lê Minh Hải_D07CNPM2 Page 18

Page 19: Lê Minh Hải

Agents on mobile devices

điểm đó bao gồm của Fabio Bellifemine, Agostino Poggi và Giovanni Rimassa), nhóm đã thành công trong việc chuyển từ mục đích đơn thuần là để được công nhận là 1 chuẩn FIPA sang phát triển một middle ware platform hoàn chỉnh. Ước muốn lúc đó của nhóm là phát triển và cung cấp dịch vụ cho giới phát triển ứng dụng phần mềm. Dịch vụ này phải dễ dàng truy cập và sử dụng bởi cả những chuyên viên phát triển dày dặn kinh nghiệm, lẫn những người mới vào nghề, chưa nắm bắt sâu sắc được kiến thức về chuẩn FIPA. Nhóm phát triển muốn tập trung vào tính đơn giản và khả năng sử dụng cao của nển tảng đối với người dùng.

Jade công bố mã nguồn mở trong năm 2000 và đã được phân phối bởi Telecom Italia theo LGPL (Library Gnu Public Licence) giấy phép. Giấy phép này đảm bảo cho tất cả các quyền cơ bản để tạo thuận lợi cho việc sử dụng các phần mềm có trong các sản phẩm thương mại: quyền làm bản sao của phần mềm và phân phối những bản sao, quyền được truy cập vào mã nguồn, và quyền thay đổi mã và làm cho cải tiến cho nó. Không giống như GPL, giấy phép LGPL không đặt bất kỳ hạn chế về phần mềm Jade sử dụng, và nó cho phép phần mềm độc quyền để được hợp nhất với phần mềm bao phủ của LGPL. Mặt khác, giấy phép cũng đòi hỏi rằng bất kỳ tác phẩm phái sinh của Jade, hay bất kỳ công việc dựa vào nó, nên được trả lại cho cộng đồng dưới giấy phép giống nhau. Hãy tham khảo (GPL-Hỏi đáp) và các văn bản giấy phép cho một phân tích toàn diện về các vấn đề pháp lý và ý nghĩa.

Jade có một trang web, http://jade.tilab.com, chứa các phần mềm, tài liệu, ví dụ mã, và nhiều thông tin về cách sử dụng Jade đang có sẵn. Dự án được hoan nghênh sự tham gia của cộng đồng mã nguồn mở với nhiều phương tiện để tham gia và đóng góp cho dự án ví dụ:

Gửi email [email protected] với một bản mô tả (mang tính công cộng) các trường hợp sử dụng Jade với công việc của bạn, nghiên cứu dự án hoặc khóa học có sử dụng Jade, hay bất kỳ hội thảo công cộng hoặc trường hợp có thể có ích cho cộng đồng Jade.

Tham gia vào các cuộc thảo luận về danh sách gửi thư Jade bằng cách trả lời và hỗ trợ cho người dùng ít kinh nghiệm. Hai địa chỉ mail luôn sẵn sàng: [email protected] cho thảo luận về các vấn đề và ý tưởng liên quan đến việc sử dụng và phát triển của Jade, và [email protected] được sử dụng bởi các quản trị viên dự án để thông báo cho cộng đồng về mới phần mềm bản phát hành và Jade sự kiện.

Cung cấp các báo cáo lỗi và khi nào có thể, sửa lỗi. Đóng góp các add-ons mới và các module cho cộng đồng.

Lê Minh Hải_D07CNPM2 Page 19

Page 20: Lê Minh Hải

Agents on mobile devices

Để tạo điều kiện tốt hơn sự tham gia của công nghiệp, tháng 5 năm 2003 Telecom Italia Lab và Motorola Inc đã thống nhất một thoả thuận hợp tác và thành lập Ban Jade Phạm, một tổ chức phi lợi nhuận tổ chức của các công ty cam kết đóng góp vào sự phát triển và thăng tiến của Jade.

Ban được thành lập như là một tập đoàn của hợp đồng với các quy định cũng xác định trị các quyền và nghĩa vụ hướng về quyền SHTT tạo ra. Ban mở cửa với các thành viên có thể tham gia và để lại theo nhu cầu của họ. Vào thời điểm viết, Telecom Italia, Motorola, France Telecom R & D, Whitestein Technologies AG và Profactor GmbH có tất cả trở thành thành viên Hội đồng.

Khi Jade lần đầu tiên được công bố bởi Telecom Italia, nó đã được sử dụng hầu như chỉ bởi cộng đồng FIPA nhưng như thiết lập tính năng của nó đã tăng trưởng vượt xa các chi tiết kỹ thuật FIPA, do đó, nó đã sử dụng bởi một cộng đồng nhà phát triển được phân phối trên toàn cầu. Điều thú vị là Jade đã đóng góp cho phổ biến rộng rãi của các chi tiết kỹ thuật FIPA bằng cách cung cấp một bộ các phần mềm và abstractions công cụ mà giấu các chi tiết kỹ thuật chính mình; lập trình cơ bản có thể thực hiện theo các chi tiết kỹ thuật mà không cần phải nghiên cứu chúng. Chúng tôi xem đây là một trong những điểm mạnh chính của Jade đối với FIPA.

Một trong những phần mở rộng chính của lõi Jade đã được cung cấp bởi LEAP [LEAP] (IST 1999 - 10211), một dự án tài trợ một phần bởi Ủy ban châu Âu rằng đã đóng góp đáng kể giữa các 2000 và 2002 về hướng porting Jade đến Java Micro Edition và môi trường mạng không dây.

Công việc này là một phần lớn do Giovanni Caire. Ngày nay, sự sẵn có của một chạy Jaderun-time cho những nền tảng J2ME-CLDC và CDC, và sử dụng địa chỉ của mình trong các vấn đề và thách thức đặt ra bởi viễn thông di động, được coi là một trong những tính năng hàng đầu của Jade phân biệt.

Lê Minh Hải_D07CNPM2 Page 20

Page 21: Lê Minh Hải

Agents on mobile devices

2. Kiến trúc Jade

Các kiến trúc phần mềm dựa trên sự cùng tồn tại của một số máy ảo Java (Java Virtual Machines) và giao tiếp dựa trên Java RMI (Remote Method Invocation) giữa các máy ảo khác nhau và sự kiện báo hiệu bên trong một máy ảo duy nhất. Mỗi máy ảo là một container cơ bản của tác tử, cung cấp một môi trường thời gian chạy hoàn chỉnh cho tác tử thi hành và cho phép thực hiện một số tác tử để thực hiện đồng thời trên cùng một host. Về nguyên tắc, kiến trúc cũng cho phép nhiều máy ảo được thực hiện trên cùng một máy chủ.

Lê Minh Hải_D07CNPM2 Page 21

Page 22: Lê Minh Hải

Agents on mobile devices

Mỗi agent container là một môi trường thực thi đa luồng gồm một Thread cho tất cả các agent và một hệ thống Thread sinh ra bởi hệ thống RMI runtime cho việc gửi tin nhắn. Một container đặc biệt đóng vai trò front-end, quản lí hoạt động agent và trình bày cho toàn bộ platform tới thế giới bên ngoài. Một Agent Platform ( AP ) hoàn thành là sau đó bao gồm một vài agent container. Sự phân phối container trên một mạng máy tính được cho phép với điều kiện RMI truyền thống giữa các máy của họ được bảo tồn. Một container hạng nhẹ đặc biệt đang được triển khai cho việc thi hành các agent trong một trình duyệt web .

Mỗi agent container là một đối tượng RMI server quản lí cục bộ một tập hợp các agent. Nó điều khiển vòng đời của các agent bằng cách tạo ra, tạm dừng, khôi phục và hủy chúng. Bên cạnh đó những giao dịch với tất cả các khía cạnh giao tiếp bằng thông điệp ACL, định tuyến theo lĩnh vực đích và đưa chúng vào hàng đợi tin nhắn thông

Lê Minh Hải_D07CNPM2 Page 22

Page 23: Lê Minh Hải

Agents on mobile devices

điệp của agent. Đối với thông điệp gửi đi , thay vào đó các agent container duy trì đủ thông tin để tìm kiếm vị trí agent nhận và chọn một phương pháp phù hợp để chuyển tiếp thông điệp ALC.

Các agent platform cung cấp một giao diện đồ họa người dùng GUI cho việc quản lí từ xa, kiểm tra và kiểm soát tình trạng của các agent. GUI cũng cho phép tạo ra và bắt đầu thực thi các agent trên một máy chủ từ xa , với điều kiện là có một agent container đang chạy. GUI được thực hiện như một agent gọi là RMA ( Remote Monitoring Agent ). Tất cả các thông tin liên lạc giữa agent và GUI ,tất cả thông tin liên lacj giữa GUI và AMS được thực hiện thông qua ACL thông qua môt phần mở rộng Adhoc của ontology Fipa-agent-management. Phần mở rộng này sẽ được đưa ra FIPA xem xét chuẩn đoán. Nếu nó được chấp nhận, các agent từ RMA có thể cùng sử dụng để kiểm soát những agent platform khác, bao gồm các platform không phải JADE. Khi xuất hiện như một thực thể duy nhất với thế giới bên ngoài, một nền tảng tác tử ADE (JADE agent platform) là một hệ thống phân phối của chính nó, có thể được phân chia thành nhiều chủ thể (host) với một trong số chúng hoạt động cho nền tảng quá trình liên lạc IIOP. Một hệ thống JADE được tạo nên từ một hoặc nhiều agent container mỗi agent container hoạt động trong một máy ảo Java và giao tiếp bằng cách sử dụng Java RMI. IIOP được sử dụng để chuyển tiếp đi các thông điệp đến các nền tảng tác tử bên ngoài. Front End container cũng là một máy chủ IIOP. Hình sau cho thấy kiến trúc của một JADE Agent Platform:

Kiến trúc phần mềm của JADE Agent Platform

Lê Minh Hải_D07CNPM2 Page 23

Page 24: Lê Minh Hải

Agents on mobile devices

3. Tại sao chúng ta nên sử dụng JADE???

JADE là một công cụ cho phép phát triển các ứng dụng một cách đơn giản. Một số các công ty đã sử dụng nó cho các ứng dụng khác nhau bao gồm quản lý cung cấp, quản lý hỗ trợ, quản lý nhanh, quản lý đấu giá, du lịch.

Các ưu điểm của JADE:

Ứng dụng phân tán bao gồm các thực thể tự động: Đầu tiên, JADE làm đơn giản hóa việc phát triển các ứng dụng phân tán bao gồm các thực thể tự động, nó cần liên kết và cộng tác theo thứ tự để hoàn tất công việc của hệ thống thực thể. Nó là một phần mềm làm ẩn dấu tất cả sự phức tạp của kiến trúc phân tán giúp cho người phát triển ứng dụng giảm được rất nhiều khó khăn.

Thỏa thuận và phối hợp: JADE hỗ trợ phát triển các ứng dụng yêu cầu thỏa thuận và phối hợp giữa một tập các agent, nơi mà tài nguyên và điều khiển logic được phân tán trong môi trường. Trong thực tế thư viện phần mềm easy-to-use để cài đặt mạng P2P và giao thức tương tác được cung cấp bởi JADE.

Hoạt động chuyên nghiệp(pro-activity): JADE agents điều khiển các thread của chúng thực thi bởi vậy nó giúp đỡ các lập trình viên khởi tạo các tác vụ bên ngoài sự can thiệp của con người. Nó được gọi là hoạt động chuyên nghiệp, làm cho JADE trở thành môi trường cho việc thực thi các ứng dụng machine-to-machine(m2m) như lập kế hoạch sản xuất tự động, điều khiển giao thông, quản lí kết nối mạng.

Ứng dụng đa phe (multi-party): Kiến trúc P2P có hiệu quả hơn kiến trúc client-server trong việc phát triển ứng dụng multi-party. Bởi vì JADE agent vừa là nhà cung cấp vừa là khách hàng, chúng có thể chuyển đổi một số cái cần thiết tạo sự khác nhau của các client và server. JADE agent cũng cho phép các client trao đổi với các client khác mà không cần thông qua một trung tâm server.

Tương tác giữa hai hệ thống: JADE tuân thủ các đặc trưng của FIPA, nó cho phép việc tương tác end-to-end giữa các agent của các nền tảng agent khác nhau.

Mã nguồn mở: JADE là có mã nguồn mở nó giúp cho người sử dụng có thể đóng góp và cộng tác với nhau.

Tính linh hoạt: JADE cung cấp một tập API đồng nhất, nó độc lập với mạng và với các phiên bản của java.

Lê Minh Hải_D07CNPM2 Page 24

Page 25: Lê Minh Hải

Agents on mobile devices

Dễ sử dụng và xây dựng các ứng dụng di động: Tập API của JADE dễ học và dễ sử dụng. JADE có thiết kế giúp đơn giản hóa việc quản lí liên kết và trao đổi thông điệp. Bên cạnh đó JADE còn giúp giảm thời gian phát triển các ứng dụng.

III. Môi trường di động và các giới hạn 1. Môi trường di động

Việc xuất hiện các mạng kết nối không dây (GPRS, UMTS, WLAN), cùng với sự phát triển không ngừng của các thiết bị cần tay như PDA, cellphone…đã dẫn đến sự kết hợp của môi trường không dây và môi trường wire-line. Nhu cầu về các ứng dụng phân tán trên mạng và trên các thiết bị cầm tay đang ngày càng trở lên quan trọng.

2. Các giới hạn của môi trường di động:

- Giới hạn về phần cứng: khả năng xử lý kém, bộ xử lý 16bit, tốc độ đồng hồ thường nhỏ hơn 200Mhz, bộ nhớ giới hạn, năng lượn cung cấp giới hạn

- Hạn chế của Java: JVM trên các thiết bị cầm tay hiện nay không cung cấp đầy đủ những đặc tính như trên laptop và máy tính để bàn. Hạn chế hỗ trợ về kết nối mạng, hạn chế đồ họa và giao diện người dùng.

- Hạn chế về mạng: JADE giả thiết rằng kết nối giữa các container là đầy đủ và liên tục. Nhưng các mạng không dây như GPRS và UMTS không thỏa mãn những giả thiết này vì chúng có đặc điểm:

Kết nối bị gián đoạn do những vùng có độ bao phủ kém, những môi trường bị che chắn và cần phải tắt thiết bị để bảo tồn năng lượng pin.

Địa chỉ IP dễ thay đổi do địa chỉ IP của thiết bị di động không cần thiết phải duy trì sau khi mất kết nối tạm thời.

Độ trễ mạng cao và băng thông thấp vào khoảng 9.6 kbps (GSM) đến 128 kbps (GPRS) và 1 Mbps (HSDPA).

Ngày nay, để nâng cao khả năng tương tác của các thiết bị di động, các hãng sản xuất còn tích hợp trong đó những cảm biến cho phép nâng cao tính năng cho các thiết bị như: Cảm biến định vị, khả năng chụp ảnh, quay phim, cảm biến gia tốc, cảm biến ánh sáng,... Những khả năng này giúp cho điện thoại thông minh hơn và nâng cao khả năng tương tác với người sử dụng.

Những ràng buộc quan trọng khác bao gồm bộ lưu trữ lâu dài thường không có sẵn hệ thống file và thời lượng của pin ngắn. Mặc dù các điện thoại di động thế hệ tiếp

Lê Minh Hải_D07CNPM2 Page 25

Page 26: Lê Minh Hải

Agents on mobile devices

theo đang cải thiện những hạn chế này và khoảng cách giữa khả năng với máy tính để bàn và laptop đang bị thu hẹp, nhưng để thỏa mãn những mong đợi của người dùng trong tương lai, các nhà phát triển sẽ phải đối mặt với vấn đề bộ nhớ và khả năng xử lý.

IV. Leap Add-on

1. Giới thiệu Leap Add-on

Vào cuối năm 1999, các nhà cung cấp lớn trong ngành viễn thông di động đã quyết định kết hợp những lỗ lực của họ để phát triển một nền tảng chung hỗ trợ cho việc phát triển agent tuân theo FIPA trên các thiết bị di động. Nhóm này được lãnh đạo bởi Motorola và gồm hai nhà sản xuất chính khác là Siemens và Ericson, cùng hai hang British Telecommunication và Telecom Italia. Kết quả của việc hợp tác này là một dự án trong chương trình IST của Ủy ban châu Âu được triển khai vào đầu năm 2000. Tên của dự án là LEAP (Lightweight Extensible Agent Platform), mục tiêu ban đầu của nó là tạo ra một middleware để chạy trên các thiết bị hạn chế về tài nguyên như điện thoại di động. Hệ thống này cũng được thiết kế để có thể mở rộng và cung cấp đầy đủ một lượng lớn các chức năng khi thực thi trên các thiết bị lớn hơn.

Một vài hình ảnh về các nhà phát triển

Motorola center (Mỹ)

Lê Minh Hải_D07CNPM2 Page 26

Page 27: Lê Minh Hải

Agents on mobile devices

Simens (Đức)

Ericsson (Thụy điển), Sony Ericsson là một công ty liên doanh giữa Nhật (Sony Corporation) và công ty viễn thông của Thụy Điển (Ericsson)

Lê Minh Hải_D07CNPM2 Page 27

Page 28: Lê Minh Hải

Agents on mobile devices

British Telecom (Anh)

British Telecom In Brussels

Lê Minh Hải_D07CNPM2 Page 28

Page 29: Lê Minh Hải

Agents on mobile devices

Telecom Italia: Italia.

Đội làm dự án LEAP đã nhanh chóng nhận ra rằng cách phát triển nền tảng hoàn chỉnh từ đầu không phải là tối ưu, mà phải chọn một nền tảng có sẵn và tùy chỉnh nó để cho phù hợp với các yêu cầu của dự án.

Sau vài tháng đánh giá, dự án đã chọn JADE làm cơ sở cho LEAP. Việc lựa chọn này do một số lý do sau:

Hiện nay, J2ME đang nhanh chóng trở thành một chuẩn để phát triển các ứng dụng di động dựa trên client.

JADE được viết hoàn toàn bằng Java. JADE được phân phối mã nguồn mở do đó cho phép truy cập đến mọi tài

nguyên một cách tự do. Ngoài ra, hiện nay JADE đã được chấp nhận bởi

Lê Minh Hải_D07CNPM2 Page 29

Page 30: Lê Minh Hải

Agents on mobile devices

cộng đồng người dùng, do đó có thể làm cơ sở cho việc chấp nhận một nền tảng agent mở rộng mới.

Một số tính năng trong JADE, như khả năng thực thi nhiều tác vụ đồng thời (behaviours) trong một luồng Java đơn, đã làm thỏa mãn những ràng buộc trên các thiết bị giới hạn về mặt tài nguyên.

Cuối cùng, việc phát triển JADE được thực hiện bởi Telecom Italia, một thành viên của dự án LEAP.

Việc cài đặt LEAP được cấu hình như một Jade add-on. Add-on này thực chất là thay thế những thành phần của nhân Jade, tạo thành môi trường run-time được gọi là Jade-Leap và được triển khai trên nhiều loại thiết bị. Jade-Leap được hình thành theo 3 cách tương ứng với 3 kiểu môi trường Java chính.

J2SE: để thực thi Jade-Leap trên PC và máy chủ trong một mạng cố định chạy JDK 1.4 và những bản JDK sau này.

pJava: để thực thi Jade-Leap trên các thiết bị cầm tay hỗ trợ J2ME CDC hoặc Personal Java.

MIDP (Mobile Information Device Profile): thực thi Jade-Leap trên các thiết bị cầm tay hỗ trọ MIDP 1.0

Lê Minh Hải_D07CNPM2 Page 30

Page 31: Lê Minh Hải

Agents on mobile devices

Nền tảng J2ME là mục tiêu của hai nhóm sản phẩm

Các thiết bị (CLDC – Connected Limited Device Configuration): cá nhân, mobile, kết nối, thông tin, như điện thoại di động, máy nhắn tin…

Các thiết bị như (CDC – Connected Device Configuration): chia sẻ, cố định, kết nối, thông tin như: internet TV, hệ thống định vị…

Hình sau đây thể hiện một cách tổng quan các thành phần của công nghệ Java ME và làm thể nao nó liên quan đến các công nghệ Java khác. Cột thứ 2 từ phải sang – một trong những thiết kế cho điện thoại di động.

Lê Minh Hải_D07CNPM2 Page 31

Page 32: Lê Minh Hải

Agents on mobile devices

Mặc dù bản chất khác nhau nhưng 3 phiên bản Jade-Leap đều cung cấp cùng một tập con API cho các nhà phát triển, do đó nó cung cấp một tầng thống nhất cho rất nhiều loại thiết bị và mạng khác nhau.

Lê Minh Hải_D07CNPM2 Page 32

Page 33: Lê Minh Hải

Agents on mobile devices

2. Jade và Jade Leap

Từ quan điểm của các nhà phát triển và của người dùng, JADE-LEAP cho bản J2SE giống hệt với JADE về các API và việc quản trị run-time. Các nhà phát triển có thể triển khai các agent của JADE trên JADE-LEAP và ngược lại mà không cần thay đổi một dòng code nào. Cũng không cần tài liệu hướng dẫn về JADE-LEAP hay về API, vì những gì cung cấp cho JADE đều có thể áp dụng cho JADE-LEAP.

Tuy nhiên, cần nhớ rằng các container trong JADE và các container trong JADE-LEAP không thể được trộn lẫn trong một platform. Đây là sự thúc đẩy chính dẫn đến việc có được phiên bản J2SE trong JADE-LEAP. Nếu không có nó thì không thể triển khai một JADE-LEAP platform đơn lẻ trong cả môi trường không dây và môi trường có dây.

2.1. Sự khác nhau giữa Jade và j2se của Jade – leap

J2SE của JADE-LEAP cung cấp các API giống như JADE. Tuy nhiên có một số khác nhau trong việc quản trị run-time.

Các file Jar: JADE-LEAP được tạo ra khi xây dựng J2SE của JADE-LEAP cũng sẽ chứa các lớp liên quan đến cả các công cụ quản trị (trong JADE có jadeTools.jar) lẫn các giao thức vận chuyển thông được đã có như HTTP và IIOP (trong JADE có http.jar và iiop.jar)

Đặc tả các agent tự khởi động (bootstrap) trên dòng lệnh: khi khởi động JADE từ dòng lệnh, các agent mà phải được kích hoạt ở giai đoạn tự khởi động (bootstrap) phải được phân cách bởi ký tự trắng (‘ ’). Trong khi đó, ký tự (;) được sử dụng làm ký tự phân chia ranh giới khi khởi động JADE-LEAP. Ví dụ lệnh sau trong JADE:

Được thay thế bằng

Khi khởi động JADE-LEAP.

Các tham số của agent: các tham số của agent trong JADE được phân cách bởi ký tự trắng (‘ ’), trong cả dòng lệnh lẫn trong màn hình giao diện; trong khi dấu chấm phẩy (;) được sử dụng làm ký tự phân cách trong JADE-LEAP. Ví dụ lệnh JADE sau:

Lê Minh Hải_D07CNPM2 Page 33

Page 34: Lê Minh Hải

Agents on mobile devices

Được thay thế bằng

Khi khởi động JADE-LEAP. Trong JADE-LEAP, các tham số của agent không chứa các ký tự trắng.

Các lựa chọn dòng lệnh:

Nếu JADE phải được bắt đầu mà không có các tùy chọn và chỉ đặc tả của các agent bootstrap, tùy chọn –agents phải được sử dụng, vì một dòng lệnh như java jade.Boot xxxx được biên dịch với xxxx là tên của file cấu hình. Do đó, ví dụ lệnh java jade.Boot sẽ không làm việc; thay vào đó lệnh java jade.Boot –agents john:MyClass phải được sử dụng.

Các lựa chọn –nomobility và –dump không có trong JADE-LEAP LEAP IMTP (xem phần 1.2) có thể được cấu hình bằng cách xác định

một số lựa chọn mà được bỏ qua khi chạy JADE thô.2.2. Leap IMTP

Mặc dù JADE và JADE-LEAP khá giống nhau nhìn từ bên ngoài, nhưng về bản chất bên trong chúng lại rất khác nhau. Một ví dụ điển hình là IMTP, là một phần của platform giải quyết các vấn đề về tương tác giữa các container. IMTP trong JADE dựa trên RMI và nó không phù hợp với các thiết bị di động. Do đó, JADE-LEAP sử dụng IMTP theo cách khác, đó là dựa trên giao thức JICP (Jade Inter-Container Protocol). Sự khác nhau giữa hai giao thức (RMI và JICP) là lý do chính giải thích vì sao container trong JADE-LEAP không thể đăng ký với main container trong JADE và ngược lại.

LEAP IMTP bao gồm một Command Dispatcher và một hoặc nhiều bên giao tiếp nội (Internal Communication Peer - ICP). Command Dispatcher là một singleton và được chia sẻ giữa mọi container trong cùng JVM. Nó chịu trách nhiệm:

Serialize (nối tiếp hóa) và deserialize các lệnh ngang của JADE (horizontal command) được trao đổi giữa các container.

Định tuyến các lệnh đã được nối tiếp hóa từ các container cục bộ đến ICP (theo các địa chỉ của container đích) để truyền thông qua mạng.

Truyền các lệnh nhận được bởi các ICP ngầm tới các container cục bộ.

Các ICP có trách nhiệm gửi và nhận các lệnh đã được nối tiếp hóa (cụ thể là các chuỗi byte thô) qua mạng sử dụng một giao thức cho trước. Hình sau minh họa các thành phần chính của LEAP IMTP

Lê Minh Hải_D07CNPM2 Page 34

Page 35: Lê Minh Hải

Agents on mobile devices

LEAP add-on bao gồm 3 cài đặt ICP; ICP mặc định dựa trên JICP được cài đặt bởi lớp jade.imtp.leap.JICP.JICPPeer, phiên bản SSL của JICP ICP được cài đặt bởi lớp jade.imtp.leap.JICP.JICPSPeer, và ICP dựa trên HTTP được cài đựt bởi lớp jade.imtp.leap.http.HTTPPeer. Điều này nghĩa là một JADE-LEAP platform có thể sử dụng JICP, JICP thông qua SSL hoặc HTTP làm giao thức truyền thông giữa các container.

Chú ý, vì có nhiều ICP có thể được kích hoạt trong Command Dispatcher, nên mọi contain đang cư trú trong JVM cục bộ, và do đó chia sẻ Command Dispatcher, có thể tìm ra ở nhiều địa chỉ. Ví dụ, trong hình phía trên, mọi container có thể tìm thấy bởi các container khác ở địa chỉ jicp://…và ở một địa chỉ khác là http://...

o Cấu hình LEAP IMTP

Thuộc tính cấu hình chính được chấp nhận bởi LEAP IMTP là icps – xác định ICP nào được kích hoạt trong container cho trước. Giá trị của thuộc tính là một danh sách các đặc tả ICP được ngăn cách bởi dấu chấm phẩy (;) (có dạng tương tự như các đặc tả agent hoặc các đặc tả MTP), ví dụ:

Lê Minh Hải_D07CNPM2 Page 35

Page 36: Lê Minh Hải

Agents on mobile devices

Lệnh trên khởi động một main container trong JADE-LEAP với 2 ICP; một ICP sử dụng giao thức JICP và lắng nghe các lệnh ngang đang tới trên cổng mặc định 1099 và ICP còn lại sử dụng giao thức HTTP và lắng nghe các lệnh ngag trên cổng 2000. Giá trị mặc định của tùy chọn icps là một JICP ICP đơn lẻ sử dụng cổng mặc định 1099. Do đó, lệnh

Tương đương với

Khi sử dụng giao thức HTTP (cụ thể là khi kích hoạt HTTPPeer ICP) lựa chọn –proto http phải được xác định trên các container peripheral cùng với các thuộc tính –host và –port.

V. Sử dụng Jade Leap 1. Chế độ thực thi container tách riêng

Rõ ràng là các agent trong JADE cần một môi trường run-time bên dưới để cung cấp cho chúng các chức năng cần thiết để các agent có thể tồn tại và giao tiếp. Thông thường, các môi trường run-time của JADE luôn được cài đặt với các container, nhưng các LEAP add-on lại cung cấp một phương tiện cài đặt môi trường run-time khác, đó là chế độ thực thi tách riêng (split) và được thiết kế đặc biệt để thỏa mãn các yêu cầu của các thiết bị di động.

Lê Minh Hải_D07CNPM2 Page 36

Page 37: Lê Minh Hải

Agents on mobile devices

Môi trường Jade runtime có thể thực thi trong 2 chế độ khác nhau.

Chế độ thực thi thông thường “stand-alone” nơi một container hoàn chỉnh thực thi trên thiết bị/host nơi Jade runtime đã được kích hoạt.

Chế độ thực thi “Split” nơi container đã được chia ra thành từng phần vào trong một FontEnd (trên thực tế đang chạy trên thiết bị/host nơi Jade runtime đã được kích hoạt) và một BackEnd (đang chạy trên một server từ xa) liên kết với nhau.

Khi khởi chạy môi trường JADE run-time sử dụng chế độ thực thi riêng rẽ, người dùng không cần tạo một container chuẩn, nhưng phải tạo một tầng rất mỏng gọi là front-end. Front-end cung cấp các tính năng cũng giống như của container cho các agent, nhưng chỉ cài đặt trực tiếp một tập nhỏ các tính năng đó, trong khi các công việc

Lê Minh Hải_D07CNPM2 Page 37

Page 38: Lê Minh Hải

Agents on mobile devices

khác được giao cho một bộ xử lý từ xa gọi là back-end. Nếu front-end trông như một container chuẩn nhìn từ quan điểm của các agent đang cư trú trên đó, thì back-end trông giống như một container chuẩn nhòm từ quan điểm của các container khác trong platform, kể cả container chính. Kết quả của việc hợp nhất front-end và back-end hình thành nên một container bị tách làm 2 phần, tạo nên chế độ thực thi tách riêng. Front-end và back-end giao tiếp với nhau thông qua một kết nối dành riêng như trong hình 8.3.

Chế độ thực thi tách riêng thường thích hợp cho các thiết bị không dây và giới hạn về tài nguyên vì:

Front-end chạy trên thiết bị nhẹ hơn đáng kể so với một container hoàn chỉnh. Pha khởi động nhanh hơn nhiều vì mọi giao tiếp với container chính tham gia

vào platform được thực hiện bởi bộ phận back-end và do đó không thực hiện trên các kết nối không dây.

Việc sử dụng các liên kết không dây được tối ưu hóa. Cả front-end và back-end được nhúng vào một cơ chế lưu trữ và chuyển tiếp

để làm cho việc mất kết nối tạm thời trở nên trong suốt với ứng dụng. Nghĩa là, nếu kết nối giữa front-end và back-end bị đứt, các thông điệp đến và đi từ các agent đang tồn tại trên front-end được lưu tạm vào bộ đệm cả ở trên back-end lẫn trên front-end. Ngay khi front-end thiết lập lại kết nối, các thông điệp đó sẽ được phân phối tới người nhận dự kiến.

Lê Minh Hải_D07CNPM2 Page 38

Page 39: Lê Minh Hải

Agents on mobile devices

Địa chỉ IP của thiết bị di động không bao giờ nhìn thấy được bởi các container khác trong platform, vì chúng luôn tương tác với back-end. Thậm chí nó có thể thay đổi mà không ảnh hưởng đến ứng dụng.

Bảng 8.1 tổng kết hai chế độ thực thi (chế độ bình thường (hay còn gọi là stand-alone) và chế độ tách biệt) được hỗ trợ trong các môi trường khác nhau mà JADE-LEAP hướng đến. Chú ý, chế độ thực thi tách biệt là chế bộ bắt buộc trong MIDP và rất được khuyến nghị trong pJava. Một chú ý quan trọng nữa là các nhà phát triển agent không phải quan tâm đến việc các agent của họ chạy trên một container chuẩn hoặc trên front-end của split container, vì các API mà chúng cung cấp về bản chất là giống nhau.

Tuy nhiên, có 3 vấn đề mà những người phát triển này phải biết được:

Không thể thực thi một container chính sử dụng chế độ thực thi tách riêng.

Lớp jade.core.Runtime và các lớp trong gói jade.wrapper được thiết kế để điều khiển một container độc lập. Các ứng dụng bên ngoài có thể điều khiển một split container bằng các phương tiện trong một giao diện được cung cấp bởi lớp jade.core.MicroRuntime. Lớp này rõ ràng chỉ có sẵn khi làm việc với JADE-LEAP, vì chế độ thực thi tách riêng không tồn tại trong JADE thông thường.

Tính di động và sự nhân bản agent không được hỗ trợ trong split container.

Khi chạy JADE-LEAP trên thiết bị PersonalJava/CDC và cần phải có các tính năng di động, người ta khuyến khích sử dụng chế độ thực thi tách biệt cũng như cơ chế nạp hành vi động bởi lớp jade.core.behaviours.LoaderBehaviour trước tiên. Chỉ khi điều

Lê Minh Hải_D07CNPM2 Page 39

Page 40: Lê Minh Hải

Agents on mobile devices

này không phù hợp với nhu cầu ứng dụng thì chế độ thực thi độc lập mới nên được sử dụng.

2. Mediator(Bộ phận trung gian)

Khi xem xét một ứng dụng thực với một số người dùng, mỗi ứng dụng chạy các agent trên điện thoại di động của người dùng đó, phải có một cơ chế để tự động quản lý các back-end của mọi front-end đang hoạt động trên các thiết bị của người dùng. Cơ chế này được cài đặt bởi một thành phần kiến trúc trong JADE-LEAP gọi là mediator, như trong hình 8.4.

Mediator phải chạy trên một máy với một địa chỉ cho trước, cố định và nhìn thấy được trước khi các front-end được khởi tạo trên thiết bị di động. Khi người dùng kích hoạt JADE-LEAP sử dụng chế độ thực thi tách biệt trên điện thoại của họ thì front-end sẽ khởi động và kết nối tới mediator mà đang yêu cầu tạo một back-end. Việc này được thực hiện bằng cách gửi yêu cầu CREATE_MEDIATOR qua kết nối mở mới nhất sử dụng giao thức JICP như đã đề cập trong phần 8.2.2. Mediator này sẽ khởi tạo một back-end và truyền cho nó kết nối đã được mở bởi front-end. Front-end và back-end sau đó sẽ sử dụng kết nối này cho mọi tương tác về sau. Ngược lại, back-end đăng ký với container chính, cho phép split container vừa được sinh rat ham gia vào platform. Tại thời điểm này, mediator sẽ gửi lại một phản hồi cho front-end mà chứa những thông tin như tên của container, tên của platform và địa chỉ của platform…Biểu đồ tuần tự trong hình 8.5 biểu diễn thủ tục khởi động split container.

Sau thủ tục khởi động, mọi tương tác về sau giữa front-end và back-end đều không liên quan đến mediator. Tuy nhiên, mediator duy trì một bảng ánh xạ tên của

Lê Minh Hải_D07CNPM2 Page 40

Page 41: Lê Minh Hải

Agents on mobile devices

container với các back-end tương ứng. Nếu vì một số lý do nào đó (ví dụ như điện thoại ngoài vùng phủ sóng) mà kết nối giữa front-end và back-end bị đứt, thì front-end sẽ cố gắng thiết lập lại kết nối một cách định kỳ thông qua mediator, như trong biểu đồ tuần tự hình 8.6.

Yêu cầu CREATE_MEDIATOR được sử dụng cho việc này. Yêu cầu này có chứa tên của container, do đó cho phép mediator truyền kết nối đến đúng back-end.

Chú ý là trong cả hai thủ tục khởi động và kết nối lại, thành phần duy nhất chấp nhận kết nối là mediator. Do đó, nếu mediator, container chính và các container khác (nếu có) đang chạy dưới một tường lửa, thì yêu cầu duy nhất là phải mở cổng mà mediator sử dụng để lắng nghe kết nối đang tới.

JADE-LEAP cung cấp hai thực thể có khả năng đóng vai trò mediator là:

Các ICP của giao thức LEAP IMTP. Nghĩa là để có một mediator chạy được, chỉ cần khởi động một container bình thường trong JADE-LEAP (tất nhiên là cả container chính). Nếu cổng không phải là cổng mặc định (1099) được yêu cầu để chấp nhận kết nối từ các front-end, thì lựa chọn –local – port sẽ được xác định.

BEManagementService trong LEAP add-on

Lê Minh Hải_D07CNPM2 Page 41

Page 42: Lê Minh Hải

Agents on mobile devices

3. Các cách cấu hình split container

Có một số cách được xác định khi khởi động front-end của một split container, trong đó quan trọng nhất là các tham số - host và –port. Tuy nhiên, các cách này không chỉ ra máy và cổng của container chính trong trường hợp khởi động container bình thường, nhưng thay vào đó nó chỉ ra máy và cổng của mediator. Chỉ trong trường hợp Container chính làm việc như là mediator thì – host và – port cho split container và container bình thường mới được chỉ rõ. Cách cấu hình này thường được sử dụng khi cài đặt chế độ thực thi tách riêng, nhưng thông thường, nó không thích hợp trong những ngữ cảnh triển khai thực tế mà ở đó người ta quan tâm đến việc bảo vệ container chính khỏi tường lửa.

Các cách đáng chú ý khác có thể được sử dụng để điều khiển việc khởi động split container là:

- agents<list of agent specifiers> với container bình thường, cách này xác định các agent phải được kích hoạt trong pha khởi động của front-end.

- exitwhenempty [true | false] khi thiết lập là true, cách này có ý nghĩa là bảo front-end phải kết thúc ngay khi không có agent nào nữa cư trú trên nó. Mặc định là false.

- msisdn<telephone number> cách này có ý nghĩa là nói với JADE điện thoại cư trú trên front-end đang khởi động có một số điện thoại (msisdn là một thuật ngữ trong viễn thông để chỉ số điện thoại của điện thoại di động).

Lê Minh Hải_D07CNPM2 Page 42

Page 43: Lê Minh Hải

Agents on mobile devices

Kết quả là JADE sẽ sử dụng số điện thoại này làm tên cho split container vừa được sinh ra.

- connection-manager<connection-manager class name> cách này cho phép đặc tả của một lớp mà cài đặt giao diện jade.core.FEConnectionManager. Cách này được sử dụng để quản lý (trên front-end) kết nối giữa front-end và back-end.

- mediator-class<mediator class name> lựa chọn này cho phép đặc tả của một lớp acài đặt giao diện jade.imtp.leap.JICP.JICPMediator, được sử dụng để quản lý (ở phía back-end) kết nối giữa front-end và back-end.

4. Building LEAP

LEAP được phân phối dưới dạng mã nguồn và sử dụng ANT build system để build và thực thi hệ thống. Bạn cũng cần JADE 2.5 hoặc nguồn mới hơn.

ANT builder giả định LEAP source và Jade source là trong cùng mức thư mục. Để tạo một thư mục gọi jade-leap. Sau đó unzip Jade và Leap source vào trong thư mục. Bạn sau đó sẽ thấy hai thư mục con của jade-leap, jade và leap.

Mở một cửa sổ lệnh và tiến đến thư mục leap thư mục làm việc của bạn. Bạn sẽ tìm buildLEAP.bat.

Kết hợp LEAP với Jade

Trước khi bạn có thể biên dịch bạn phải kết hợp Jade và Leap. Như:

Kết hợp buildLEAP (buildLEAP merge).

Bạn có thể còn sử dụng unmerge and clean với cú pháp này.

Building Jars và docs.

Bạn có thể biên dịch bất kỳ hoặc tất cả 3 đích có thể: Java 2 Standard Edition, pJava for Microsoft Windows cơ sở thiết bị cầm tay như ipaq, và MIDP cho điện thoại di động và thiết bị cầm tay Palm. buildLEAP có một cú pháp thứ hai cho bước này (mà giống nhau cho jar và doc). Đây là, trong BNF.

buildLEAP [{<devices>}* {actions}]

Lê Minh Hải_D07CNPM2 Page 43

Page 44: Lê Minh Hải

Agents on mobile devices

Nơi devices có thể, j2se, pjava, hoặc midp, và actions có thể có một vài thứ bao gồm, biên dịch, jar, và javadoc.

Building Jars và docs.

Compiling

So, to compile for j2se and midp platforms, type

buildLEAP j2se midp compile

This produces hordes of class files under the classes directory. You really wand to package them in jar files, so type,

Thiết lập môi trường

Bạn cần bảo buildLEAP nơi java runtime bởi thiết lập JAVA_HOME, ví dụ, set JAVA_HOME=c:\jdk1.3.1

Nếu bạn đang biên dịch cho pjava hoặc midp bạn còn cần tìm vị trí của các file liên quan trong buildLEAP.properties. Với MIDP bạn cần nhập vị trí của Java 2 Micro Edition Wireless Toolkit. Cho ví dụ, trong file buildLEAP.properties.

# thư mục nơi Sun J2ME Wireless Toolkit đã cài đặc (yêu cầu chỉ tạo và biên dịch Jade-Leap cho MIDP)

J2me-wtk-home=c:/J2mewtk

Biên dịch

Vì vậy, để biên dịch cho j2se và midp platforms, kiểu

buildLEAP j2se midp compile

Điều này tạo ra các file class dưới thư mục classes. Bạn thự sự muốn gói chúng lại trong các file Jar, kiểu:

Jaring

buildLEAP j2se midp jar

Lê Minh Hải_D07CNPM2 Page 44

Page 45: Lê Minh Hải

Agents on mobile devices

Kết quả JadeLeapJ2se.jar và JadeLeapMidp.jar trong thư mục leap\lib

Documentation

Nếu bạn muốn bạn cũng có thể tạo ra các loại tài liệu javadoc với

buildLEAP j2se midp javadoc

Kết quả dưới thư mục leap\doc.

VI.Công nghệ J2ME

1. Giới thiệu chung

J2ME( Java 2 Micro Edition) là một nhánh của ngôn ngữ lập trình Java để phát triển các ứng dụng trên điện thoại di động hay các thiết bị cầm tay nhỏ gọn khác. J2ME được phát triển từ kiến trúc Java Card, Embeded Java và Personal Java của phiên bản Java 1.1. Đến sự ra đời của Java 2 thì Sun quyết định thay thế Personal Java và đươc gọi với tên mới là Java 2 Micro Edition, hay viết tắt là J2ME. Đúng với tên gọi, J2ME là nền tảng cho các thiết bị có tính chất nhỏ, gọn.

Khi cài đặt J2ME cần có các công cụ sau:

J2SDK - cần thiết cho việc biên dịch, chứa các class cơ bản và bộ các công cụ lập trình.

J2RE - Máy ảo để chạy code Java J2ME wireless toolkit - Bộ công cụ chuẩn để biên dịch code J2ME của Sun

Microsystem.

Lê Minh Hải_D07CNPM2 Page 45

Page 46: Lê Minh Hải

Agents on mobile devices

IntellJ IDEA - Công cụ biên soạn code Java thông dụng

Thứ tự cài đặt là J2SDK; tiếp theo bởi J2RE, J2ME wireless toolkit; sau đó là IDEA; rồi thiết lập đường dẫn cần thiết trong IDEA tới vị trí của J2SDK, J2RE và Wireless Toolkit đã cài.

2. Lý do chọn J2ME

a) Java ban đầu được thiết kế dành cho các máy với tài nguyên bộ nhớ hạn chế.

b) Thị trường của J2ME được mở rộng ra cho nhiều chủng loại thiết bị như:

• Các lọai thẻ cá nhân như Java Card

• Máy điện thoại di động

• Máy PDA (Personal Digital Assistant - thiết bị trợ giúp cá nhân)

• Các hộp điều khiển dành cho tivi, thiết bị giải trí gia dụng …

3. Kiến trúc J2MECác thành phần trong J2ME

Mục tiêu của J2ME là cho phép người lập trình viết các ứng dụng độc lập trên thiết bị di động, không cần quan tâm đến phần cứng thật sự. J2ME được xây dựng bằng các tầng (layer) khác nhau.

Lê Minh Hải_D07CNPM2 Page 46

Page 47: Lê Minh Hải

Agents on mobile devices

Mỗi tầng ở trên tầng hardware là tầng trừu tượng hơn cung cấp cho lập trình viên nhiều giao diện lập trình ứng dụng (API-Application Program Interface) thân thiện hơn.

Từ dưới lên trên:

Tầng phần cứng thiết bị(Device hadware layer): Đây chính là thiết bị di động thật sự với cấu hình phần cứng của nó về bộ nhớ và tốc độ xử lý. Dĩ nhiên thật ra nó không phải là một phần của J2ME nhưng nó là nơi xuất phát. Các thiết bị di động khác nhau có thể có các bộ vi xử lý khác nhau với các tập mã lệnh khác nhau. Mục tiêu của J2ME là cung cấp một chuẩn cho tất cả các loại thiết bị di động khác nhau.

Tầng máy ảo java(Java Virtual Machine Layer): Khi mã nguồn Java được biên dịch nó được chuyển đổi thành mã bytecode. Mã bytecode này sau đó được chuyển thành mã ngôn ngữ máy của thiết bị di động. Tầng máy ảo Java bao gồm KVM (K Virtual Machine) là bộ biên dịch mã bytecode có nhiệm vụ chuyển mã bytecode của chương trình Java thành ngôn ngữ máy để chạy trên thiết bị di động. Tầng này cung cấp một sự chuẩn hóa cho các thiết bị di động để ứng dụng J2ME sau khi đã biên dịch có thể hoạt động trên bất kỳ thiết bị di động nào có J2ME KVM.

Tầng Cấu Hình( Configuration layer): Tầng cấu hình của CLDC định nghĩa giao diện ngôn ngữ Java (Java language interface) cơ bản để cho phép chương trình Java chạy trên thiết bị di động. Đây là một tập các API định nghĩa lõi của ngôn ngữ J2ME. Lập trình viên có thể sử dụng các lớp và phương thức của các API này tuy nhiên tập các API hữu dụng hơn được chứa trong tầng hiện trạng (profile layer).

Định nghĩa về Configuration (Cấu hình): là đặc tả định nghĩa một môi trường phần mềm cho một dòng các thiết bị được phân loại bởi tập hợp các đặc tính, ví dụ như:

Lê Minh Hải_D07CNPM2 Page 47

Page 48: Lê Minh Hải

Agents on mobile devices

• Kiểu và số lượng bộ nhớ• Kiểu và tốc độ bộ vi xử lý• Kiểu mạng kết nối

Do đây là đặc tả nên các nhà sản xuất thiết bị như Samsung, Nokia …bắt buộc phải thực thi đầy đủ các đặc tả do Sun qui định để các lập trình viên có thể dựa vào môi trường lập trình nhất quán và thông qua sự nhất quán này, các ứng dụng được tạo ra có thể mang tính độc lập thiết bị cao nhất có thể. Hiện nay Sun đã đưa ra 2 dạng Configuration:

CLDC (Connected Limited Device Configuration-Cấu hình thiết bị kết nối giới hạn): được thiết kế để nhắm vào thị trường các thiết bị cấp thấp (low-end), các thiết bị này thông thường là máy điện thoại di động và PDA với khoảng 512 KB bộ nhớ. Vì tài nguyên bộ nhớ hạn chế nên CLDC được gắn với Java không dây (Java Wireless ), dạng như cho phép người sử dụng mua và tải về các ứng dụng Java, ví dụ như là Midlet.

CDC- Connected Device Configuration (Cấu hình thiết bị kết nối): CDC được đưa ra nhắm đến các thiết bị có tính năng mạnh hơn dòng thiết bị thuộc CLDC nhưng vẫn yếu hơn các hệ thống máy để bàn sử dụng J2SE. Những thiết bị này có nhiều bộ nhớ hơn (thông thường là trên 2Mb) và có bộ xử lý mạnh hơn. Các sản phẩm này có thể kể đến như các máy PDA cấp cao, điện thoại web, các thiết bị gia dụng trong gia đình …

Tầng Hiện trạng( Profile Layer): Tầng hiện trạng hay MIDP (Hiện trạng thiết bị thông tin di động-Mobile Information Device Profile) cung cấp tập các API hữu dụng hơn cho lập trình viên. Mục đích của hiện trạng là xây dựng trên lớp cấu hình và cung cấp nhiều thư viện ứng dụng hơn. MIDP định nghĩa các API riêng biệt cho thiết bị di động. Cũng có thể có các hiện trạng và các API khác ngoài MIDP được dùng cho ứng dụng. Ví dụ, có thể có hiện trạng PDA định nghĩa các lớp và phương thức hữu dụng cho việc tạo các ứng dụng PDA (lịch, sổ hẹn, sổ địa chỉ,…). Cũng có thể có một hiện trạng định nghĩa các API cho việc tạo các ứng dụng Bluetooth. Thực tế, các hiện trạng kể trên và tập các API đang được xây dựng. Chuẩn hiện trạng PDA là đặc tả JSR - 75 và chuẩn bluetooth API là đặc tả JSR - 82 với JSR là viết tắt của Java Specification Request.

Định nghĩa về Profile: Profile mở rộng Configuration bằng cách thêm vào các class để bổ trợ các tính năng cho từng thiết bị chuyên biệt. Cả 2 Configuration đều có những profile liên quan và từ những profile này có thể dùng các class lẫn nhau. Đến đây ta có thể nhận thấy do mỗi profile định nghĩa một tập hợp các

Lê Minh Hải_D07CNPM2 Page 48

Page 49: Lê Minh Hải

Agents on mobile devices

class khác nhau, nên thường ta không thể chuyển một ứng dụng Java viết cho một profile này và chạy trên một máy hỗ trợ một profile khác. Cũng với lý do đó, bạn không thể lấy một ứng dụng viết trên J2SE hay J2EE và chạy trên các máy hỗ trợ J2ME. Sau đây là các profile tiêu biểu:

Mobile Information Device Profile (MIDP): profile này sẽ bổ sung các tính năng như hỗ trợ kết nối, các thành phần hỗ trợ giao diện người dùng … vào CLDC. Profile này được thiết kế chủ yếu để nhắm vào điện thọai di động với đặc tính là màn hình hiển thị hạn chế, dung lượng chứa có hạn. Do đó MIDP sẽ cung cấp một giao diện người dùng đơn giản và các tính năng mạng đơn giản dựa trên HTTP. Có thể nói MIDP là profile nổi tiếng nhất bởi vì nó là kiến thức cơ bản cho lập trình Java trên các máy di động (Wireless Java)

3.1. Máy ảo java( hay KVM)

Vai trò của máy ảo Java hay KVM là dịch mã bytecode được sinh ra từ chương trình Java đã biên dịch sang ngôn ngữ máy. Chính KVM sẽ chuẩn hóa output của các chương trình Java cho các thiết bị di động khác nhau có thể có bộ vi xử lý và tập lệnh khác nhau. Không có KVM, các chương trình Java phải được biên dịch thành tập lệnh cho mỗi thiết bị di động. Như vậy lập trình viên phải xây dựng nhiều đích cho mỗi loại thiết bị di động

Hình 2. Tiến trình xây dựng MIDlet

Quá trình phát triển ứng dụng MIDlet với IDE (Môi trường phát triển tích hợp-Intergrated Development Environment):

Lập trình viên: Tạo các tập tin nguồn java

Bước đầu tiên là lập trình viên phải tạo mã nguồn Java, có thể có nhiều tập tin (*.java).

Lê Minh Hải_D07CNPM2 Page 49

Page 50: Lê Minh Hải

Agents on mobile devices

Trên IDE: Bộ biên dịch java( java compiler): Biên dịch mã nguồn thành mã bytecode

Bộ biên dịch java sẽ biên dịch mã nguồn thành mã bytecode. Mã bytecode này sẽ được KVM dịch thành mã máy.Mã bytecode đã biên dịch sẽ được lưu trong các tập tin *.class và sẽ có một tập tin *.class sinh ra cho mỗi lớp java

Trên IDE: Bộ tiền kiểm tra (Preverifier): Kiểm tra tính hợp lệ của mã bytecode.

Một trong những yêu cầu an toàn của J2ME là bảo đảm mã bytecode chuyển cho KVM là hợp lệ và không truy xuất các lớp hay bộ nhớ ngoài giới hạn của chúng. Do đó tất cả các lớp đều phải được tiền kiểm tra trước khi chúng có thể được download về thiết bị di động. Việc tiền kiểm tra được xem là một phần của môi trường phát triển làm cho KVM có thể được thu nhỏ hơn. Bộ tiền kiểm tra sẽ gán nhãn lớp bằng một thuộc tính (attribute) đặc biệt chỉ rằng lớp đó đã được tiền kiểm tra. Thuộc tính này tăng thêm khoảng 5% kích thước của lớp và sẽ được kiểm tra bởi bộ kiểm tra trên thiết bị di động.

Trên IDE: Tạo tập tin JAR

IDE sẽ tạo tập tin JAR chứa:

- Tất cả các tập tin class- Các hình ảnh của ứng dụng- Các tập tin dữ liệu có thể có được yêu cầu bởi ứng dụng- Một tập tin kê khai(manifest.mf) cung cấp mô tả về ứng dụng cho bộ quản lí

ứng dụng (application manager) trên thiết bị di động- Tập tin JAR được bán hoặc phân phối đến người dùng đầu cuối

Sau khi đã gỡ rồí và kiểm tra mã lệnh trên trình giả lập(simulator), mã lệnh đã sẵn sàng được kiểm tra trên điện thoại di động và sau đó được phân phối cho người dùng.

Người dùng: download bộ cài ứng dụng về thiết bị di động

3.2. Tầng CLDC( Connected Limited Device Configuration)

Tầng J2ME kế trên tầng KVM là CLDC hay Cấu hình thiết bị kết nối giới hạn. Mục đích của tầng này là cung cấp một tập tối thiểu các thư viện cho phép một ứng dụng Java chạy trên thiết bị di động. Nó cung cấp cơ sở hạ tầng cho tầng Hiện trạng ,tầng này sẽ chữa nhiều API chuyên biệt hơn. Các CLDC API được định nghĩa với sự hợp tác với 18 công ty là bộ phận của JCP (Java Community Process). Nhóm này giúp bảo đảm rằng các API được định nghĩa sẽ hữu dụng và thiết thực cho cả nhà phát triển lẫn

Lê Minh Hải_D07CNPM2 Page 50

Page 51: Lê Minh Hải

Agents on mobile devices

nhà sản xuất thiết bị di động. Các đặc tả của JCP được gán các số JSR (Java Specification Request). Quy định CLDC phiên bản 1.0 được gán số JSR - 30.

Phạm vi của tầng này: Định nghĩa các thư viện tối thiểu và các API

Định nghĩa:

- Tương thích ngôn ngữ java- Các thư viện lõ- I/O- Mạng- Bảo mật- Quốc tế hóa

Không đính nghĩa:

- Chu kì sống ứng dụng- Giao diện người dùng- Quản lí sự kiện- Giao diện ứng dụng và người dùng

Các lớp lõi Java cơ bản, input/output, mạng, và bảo mật được định nghĩa trong CLDC. Các API hữu dụng hơn như giao diện người dùng và quản lý sự kiện được dành cho hiện trạng MIDP

J2ME là một phiên bản thu nhỏ của J2SE, sử dụng ít bộ nhớ hơn để nó có thể thích hợp với các thiết bị di động bị giới hạn bộ nhớ. Mục tiêu của J2ME là một tập con 100% tương thích của J2SE.

Hình 3. Biểu diễn mối quan hệ giữa J2SE và J2ME

Lê Minh Hải_D07CNPM2 Page 51

Page 52: Lê Minh Hải

Agents on mobile devices

4. Môi trường phát triển J2ME

Một môi trường phát triển tích hợp (IDE) nhằm để cải thiện năng suất của lập trình viên bằng cách cung cấp một tập các công cụ lập trình tích hợp thông qua một giao diện người dùng đồ họa (GUI).

Một IDE cho J2ME cần phải cung cấp các tiện ích sau: • Quản lý project - Quản lý các tập tin nguồn và các thông số MIDlet• Trình soạn thảo - Soạn thảo mã nguồn và các tài nguyên• Build (Biên dịch)

- obfuscate (tuỳ chọn): sẽ loại bỏ các thông tin không cần thiết trong class (như tên của các biến cục bộ, các lớp, phương thức,..). Ngoài việc bảo vệ mã nguồn, obfuscate còn giảm kích thước của các tập tin class, làm cho kích thước của tập tin JAR cũng giảm đi…

- pre-verify (tiền kiểm tra)• Đóng gói (package) - Đóng gói các MIDlet thành các tập tin JAR và JAD• Giả lập (emulation) - Thực thi các MIDlet với một trình giả lập• Gỡ rối (debugger) - Gỡ rối MIDlet

Các J2ME IDE phổ biến và nổi tiếng sau:• Sun J2ME Wireless Toolkit 2.5• Borland Jbuilder• NetBeans IDE• IntelliJ IDEA 3089• Eclipse với EclipseME plug-in

Sun J2ME Wireless Toolkit 2.5 (WTK)• WTK là một bộ công cụ phát triển Java J2ME (Java Development Kit -

JDK) cung cấp cho các lập trình viên môi trường giả lập, công cụ, tài liệu và các ví dụ cần thiết để phát triển các ứng dụng MIDP.

• WTK không phải là một IDE hoàn chỉnh, vì nó đã bỏ các tính năng soạn thảo và gỡ rối vốn được xem là bắt buộc phải có trong một IDE. Nhưng KToolbar, được cung cấp trong bộ WTK là một môi trường phát triển tối thiểu cung cấp một GUI dành cho việc biên dịch, đóng gói và thực thi các ứng dụng MIDP.

• WTK 2.5 cũng cung cấp các bộ giả lập đã được cải tiến với các tính năng giả lập, monitor và debug mới. Có một cơ chế được thêm vào tiến trình build của KToolbar để cho phép việc tích hợp và thực thi bộ obfuscate Java byte code khi đóng gói MIDlet suite.

Cài đặt bộ J2SE vào máy tính, địa chỉ tải J2SE http://java.sun.com/j2se/ Cài đặt J2ME Wireless Toolkit, Địa chỉ http://java.sun.com/j2me/download.html

Lê Minh Hải_D07CNPM2 Page 52

Page 53: Lê Minh Hải

Agents on mobile devices

Giới thiệu tạo MIDlet bằng cách sử dụng Toolkit:Sau khi cài xong bộ Toolkit , vào ổ C:\WTK2.5.2_01. Các thư mục của bộ

toolkit được bố trí như hình sau:

Sau khi cài đặt thành công, ta mở chương trình

Chọn "New Project..." để tạo một project mới.

Lê Minh Hải_D07CNPM2 Page 53

Page 54: Lê Minh Hải

Agents on mobile devices

Nhập tên project (tên của file JAR và tên của thư mục project mới), nhập tên của

Thư mục : “C:\WTK2.5.2_01\apps\Example\src”, đây sẽ là nơi chứa source của ứng dụng. Có thể dùng bất kỳ chương trình soạn thảo văn bản nào để soạn code. Tiến hành build và run chương trình Một vài chú ý:Nhấn vào "Settings..." trên toolbar để vào menu cấu hình cho project.

• Đừng để ý đến trường "MIDlet-Jar-Size" (với giá trị là "100" bytes), Chúng ta sẽ làm cho giá trị tự được thiết lập đúng.

• Chọn MIDlets tab trong cửa sổ dialog cấu hình của porject.• Chọn hàng duy nhất trong bảng ("MIDlet-1") để làm nổi nó và chọn. Sau đó

nhấn vào nút "Edit“.• Xoá trường "Icon" nếu không có tập tin *.PNG để đặt vào tập tin JAR.• Chấp nhận các thay đổi.

  (1)Project --> Clean: Xoá tất cả tập tin *.class.  (2)Build                 : Build tất cả tập tin *.class và preverify.  (3)Project --> Package --> Create Package: Sinh ra tập tin *.JAR và *.JAD.

Khi làm 3 bước trên, tập tin *.JAR và *.JAD kết quả đã có thể sẵn sàng được thực thi trong chương trình mô phỏng, hay đưa lên WWW site để download. Trường kích thước của *.JAR trong tập tin *.JAD sẽ tự đúng. Đừng quên thực hiện bước 3 mỗi khi rebuild

VII. MIDP( Moble Imfomation Device Profile) 1. Giới thiệu

Lê Minh Hải_D07CNPM2 Page 54

Page 55: Lê Minh Hải

Agents on mobile devices

Tầng J2ME cao nhất là tầng hiện trạng và mục đích của nó là định nghĩa các API cho các thiết bị di động. Một thiết bị di động có thể hỗ trợ nhiều hiện trạng. Một hiện trạng có thể áp đặt thêm các giới hạn trên các loại thiết bị di động (như nhiều bộ nhớ hơn hay độ phân giải màn hình cao hơn). Hiện trạng là tập các API hữu dụng hơn cho các ứng dụng cụ thể. Lập trình viên có thể viết một ứng dụng cho một hiện trạng cụ thể và không cần quan tâm đến nó chạy trên thiết bị nào

Hiện tại hiện trạng được công bố là MIDP (Mobile Information Profile) với đặc tả JSR - 37. Có 22 công ty là thành viên của nhóm chuyên gia tạo ra chuẩn MIDP. MIDP cung cấp các API cho phép thay đổi trạng thái chu kỳ sống ứng dụng, đồ họa (mức cao và mức thấp), tuyến đoạn, timer, lưu trữ bền vững (persistent storage), và mạng. Nó không định nghĩa cách mà ứng dụng được nạp trong thiết bị di động. Đó là trách nhiệm của nhà sản xuất. Nó cũng không định nghĩa bất kỳ loại mô hình bảo mật end-to-end nào, vốn cần thiết cho ứng dụng kinh doanh nhận số thẻ tín dụng của người dùng. Nó cũng không bắt buộc nhà sản xuất cách mà lớp MIDP được thực hiện. MIDlet( Mobile Imfomation Device applet)

2. Bộ khung cho MIDlet Ứng dụng MIDP gọi là MIDlet

Hình 3. Bộ khung MIDlet(MIDlet Skeletion)

Thông báo import dùng để truy xuất các lớp của CLDC và MIDP

Lớp chính của ứng dụng được định nghĩa là lớp kế thừa lớp MIDlet của MIDP. Có thể chỉ có một lớp trong ứng dụng kế thừa lớp này. Lớp MIDlet được trình quản lý ứng dụng trên điện thoại di động dùng để khởi động, dừng, và tạm dừng MIDlet (ví dụ, trong trường hợp có cuộc gọi đến).Một MIDlet là một lớp Java kế thừa (extend)

Lê Minh Hải_D07CNPM2 Page 55

Page 56: Lê Minh Hải

Agents on mobile devices

của lớp trừu tượng java.microedition.midlet.MIDlet và thực thi (implement) các phương thức startApp(), pauseApp(), và destroyApp().

Hình 4. biểu diễn bộ khung yêu cầu tối thiểu cho một ứng dụng MIDlet

1) Phát biểu import: Các phát biểu import được dùng để include các lớp cần thiết từ các thư viện CLDC và MIDP.

2) Phần chính của MIDlet: MIDlet được định nghĩa như một lớp kế thừa lớp MIDlet. Trong ví dụ này MIDletExample là bắt đầu của ứng dụng.

3) Hàm tạo (Constructor) : Hàm tạo chỉ được thực thi một lần khi MIDlet được khởi tạo lần đầu tiên. Hàm tạo sẽ không được gọi lại trừ phi MIDlet thoát và sau đó khởi động lại.

4) startApp(): Phương thức startApp() được gọi bởi bộ quản lý ứng dụng khi MIDlet được khởi tạo, và mỗi khi MIDlet trở về từ trạng thái tạm dừng. Nói chung, các biến toàn cục sẽ được khởi tạo lại trừ hàm tạo bởi vì các biến đã được giải phóng trong hàm pauseApp(). Nếu không thì chúng sẽ không được khởi tạo lại bởi ứng dụng

5) pauseApp(): Phương thức pauseApp() được gọi bởi bộ quản lý ứng dụng mỗi khi ứng dụng cần được tạm dừng (ví dụ, trong trường hợp có cuộc gọi hoặc tin nhắn đến). Cách thích hợp để sử dụng pauseApp() là giải phóng tài nguyên và các biến để dành cho các chức năng khác trong điện thoại trong khi MIDlet được tạm dừng. Cần chú ý rằng khi nhận cuộc gọi đến hệ điều hành trên điện thoại di động có thể dừng KVM thay vì dừng MIDlet. Việc này không được đề cập trong MIDP mà đó là do nhà sản xuất quyết định sẽ chọn cách nào.

6) destroyApp(): Phương thức destroyApp() được gọi khi thoát MIDlet. (ví dụ khi nhấn nút exit trong ứng dụng). Nó chỉ đơn thuần là thoát MIDlet. Nó không thật sự xóa ứng dụng khỏi điện thoại di động. Phương thức destroyApp() chỉ nhận một tham số Boolean. Nếu tham số này là true, MIDlet được tắt vô điều kiện. Nếu tham số là false, MIDlet có thêm tùy chọn từ chối thoát bằng cách ném ra một ngoại lệ MIDletStateChangeException.

Lê Minh Hải_D07CNPM2 Page 56

Page 57: Lê Minh Hải

Agents on mobile devices

3. Trạng thái của MIDlet Tạo (Created): Hàm tạo MIDletExample() được gọi một một lần Hoạt động (Active): Phương thức startApp() được gọi khi chương trình bắt đầu

hay sau khi tạm dừng Tạm dừng (Paused): Phương thức pauseApp() được gọi. Có thể nhận các sự

kiện timer. Hủy (Destroyed): Phương thức destroy() được gọi.

4. Chu kì sống của MIDletKhi người dùng yêu cầu khởi động ứng dụng MIDlet, bộ quản lý ứng dụng sẽ thực

thi MIDlet (thông qua lớp MIDlet). Khi ứng dụng thực thi, nó sẽ được xem là đang ở trạng thái tạm dừng. Bộ quản lý ứng dụng gọi hàm tạo và hàm startApp(). Hàm startApp() có thể được gọi nhiều lần trong suốt chu kỳ sống của ứng dụng. Hàm destroyApp() chỉ có thể gọi từ trạng thái hoạt động hay tạm dừng.

Hình 5. Chu kì sống của MIDlet

Các phương thức dùng để điều khiển các trạng thái của MIDlet:

resumeRequest(): Yêu cầu vào chế độ hoạt động. Ví dụ: Khi MIDlet tạm dừng, và một sự kiện timer xuất hiện.

notifyPaused(): Cho biết MIDlet tự nguyện chuyển sang trạng thái tạm dừng. Ví dụ: Khi đợi một sự kiện timer.

notifyDestroyed(): Sẵn sàng để hủy. Ví dụ: Xử lý nút nhấn Exit

5. Bộ MIDlet

Lê Minh Hải_D07CNPM2 Page 57

Page 58: Lê Minh Hải

Agents on mobile devices

Một tập các MIDlet trong cùng một tập tin JAR được gọi là một bộ MIDlet (MIDlet suite). Các MIDlet trong một bộ MIDlet chia sẻ các lớp, các hình ảnh, và dữ liệu lưu trữ bền vững. Để cập nhật một MIDlet, toàn bộ tập tin JAR phải được cập nhật

Hình 4. Biểu diễn hai bộ MIDlet

Trong hình trên, một bộ MIDlet chứa MIDlet1, MIDlet2, và MIDlet3. Bộ kia chỉ chứa MIDlet4. Ba MIDlet trong bộ đầu tiên truy xuất các lớp và dữ liệu của nhau nhưng không truy xuất đến các lớp hay dữ liệu của MIDlet4. Ngược lại, MIDlet4 cũng không truy xuất được các lớp, hình ảnh, và dữ liệu của chúng.

VIII. Mobile Agent 1. Sự tiến hóa từ các mô hình ứng dụng phân tán

Theo truyền thống, một ứng dụng phân tán có cấu trúc xây dựng trên mô hình client-server sẽ thực hiện việc giao tiếp thông qua cơ chế truyền thông điệp hoặc các lời gọi hàm từ xa (RPCs). Các mô hình giao tiếp này thường phải đồng bộ, nghĩa là phía client tạm ngưng hoạt động của mình trong thời gian gởi yêu cầu đến server và đợi đến khi nhận được kết quả trả về từ server. Một kiến trúc tiến bộ hơn là Remote Evaluation (REV) do Stamos và Gifford [STA-90] đưa ra vào năm 1990. Trong mô hình REV, thay vì yêu cầu thực hiện các hàm từ xa thì client chỉ việc gởi mã nguồn các hàm của nó đến server và yêu cầu server thực hiện rồi trả về kết quả. Một số hệ thống gần đây cũng đã giới thiệu khái niệm thông điệp chủ động (active messages) có thể di trú giữa các vị trí trên mạng, mang theo mã của chương trình để thực thi tại

Lê Minh Hải_D07CNPM2 Page 58

Page 59: Lê Minh Hải

Agents on mobile devices

những vị trí này. Mobile agents là mô hình tiến hóa tiên tiến nhất so với các mô hình trước đó.

Mobile agent [LAN-98] là danh từ ghép giữa agent (trợ lý) và mobile (di động). Một mobile agent là một chương trình có khả năng di chuyển một cách tự trị từ nút mạng này sang nút mạng khác và thực hiện các xử lý thay thế cho con người để đạt được mục tiêu được giao phó. Khi di chuyển, các mobile agent đóng gói mã nguồn, dữ liệu và cả trạng thái thi hành, nhờ vậy mobile agent có thể dừng việc thi hành đang thực hiện tại máy này, di chuyển sang máy khác và khôi phục lại sự thi hành tại máy đích.

Hình 1 cho thấy sự khác biệt của Mobile agents so với RPC và REV.

2. Các đặc tính của mobile agent

Các đặc tính chính của mobile agent bao gồm :Tính tự trị (autonomous): là khả năng tự kiểm soát bản thân của agent sau khi

được giao việc mà không cần sự can thiệp nào của người dùng hoặc của agent khác [JEN-98]. Có nhiều hướng đánh giá về sự tự trị của agent. Hai đặc tính hướng đích

Lê Minh Hải_D07CNPM2 Page 59

Page 60: Lê Minh Hải

Agents on mobile devices

(goal-oriented) và tính chủ động (pro-activeness) [LAN-98] thường được dùng để đánh giá mức độ tự trị của agent. Khả năng tự trị của agent chủ yếu được quyết định bởi tri thức trang bị cho agent.

Tính di động (mobility): là khả năng di chuyển từ môi trường thi hành này sang môi trường khác khác của một agent. Khả năng di động của một agent được phân thành hai loại. Di động mạnh (strong mobility) là khả năng mà hệ thống có thể di chuyển cả mã chương trình và trạng thái thi hành của agent đến một môi trường khác. Di động yếu (weak mobility) là khả năng của hệ thống chỉ có thể di chuyển mã chương trình giữa các môi trường thi hành với nhau, mã nguồn có thể mang kèm theo một số dữ liệu khởi tạo nhưng trạng thái thi hành thì không thể di chuyển. [FUG-98].

Tính thích ứng (reactiveness): là khả năng của agent có thể thực thi trên những môi trường lạ, và cảm nhận được sự thay đổi của môi trường.

Khả năng cộng tác(collaboration): là khả năng liên lạc, phối hợp hoạt động của các agent với các agent của cùng môi trường khác hay với các loại đối tượng khác trong những môi trường khác.

IX. Xây dựng các Agent trên MIDP

Các ứng dụng viết bằng java được triển khai trên điện thoại di động có hỗ trợ MIDP phải được đóng gói thành các bộ MIDlet. Một bộ MIDlet cơ bản là một file Jar chứa:

Một số đoạn code trong lớp mở rộng : javax.microedition.midlet.MIDlet Một file manifest xác định một bản ghi MIDlet-<n> Các tài nguyên cần thiết khác

1. Xây dựng MIDlet dựa trên JADE-LEAPKhi làm việc trên thiết bị di động chạy MIDP 1.0 hoặc cao hơn thì phiên bản MIDP của JADE-LEAP phải được sử dụng. Để triển khai các ứng dụng trên thiết bị di động có MIDP , JADE-LEAP phiên bản MIDP được cấu hình như một bộ MIDlet:

Jade.MicroBoot : MIDlet này khởi động font-end của split container Jade.until.lep.Config: MIDlet này cho phép sửa chữa các thuộc tính của cấu

hình JADE-LEAP JADE.util.lead.OutputViewer: MIDlet này cho phép bạn xem lại đầu ra đã

in ra trong suốt phiên thực thi JADE-LEAPQuá trình để tạo ra một bộ MIDlet dựa trên JADE-LEAP được thực hiện qua các

bước sau:Biên dịch mã nguồn của miền ứng dụng, cụ thể là trong classpath.Giải nén mọi lớp của JADE-LEAPTiền xác minh

Lê Minh Hải_D07CNPM2 Page 60

Page 61: Lê Minh Hải

Agents on mobile devices

Tạo một file Jar đơn chứa các lớp của một mình xác định và các lớp JADE-LEAP với một file manifest thích hợp.Sửa file JAD để chứa URL và size Jar đúng.

2. Thiết lập cấu hình:Các bộ MIDlet dựa trên JADE-LEAP thường yêu cầu một số lựa chọn cấu hình

như – host, và –port.Tuy nhiên vì điện thoại có cài MIDP không có cửa sổ dòng lệnh, nên ta cần một cách để xác định các tham số này. JADE-LEAP cung cấp hai khả năng. Các lựa chọn cấu hình có thể được xác định như các entry trong file manifest của bộ MIDlet với cú pháp sau:LEAP-<option>: <value>Ví dụ một file manifest như sau:

Sau khi mở file manifest ra ta sẽ nhìn thấy nó có dạng sau:

Lê Minh Hải_D07CNPM2 Page 61

Page 62: Lê Minh Hải

Agents on mobile devices

X. Ứng dụng bán sách trên thiết bị di động1. Xây dựng ứng dụng

Lê Minh Hải_D07CNPM2 Page 62

Page 63: Lê Minh Hải

Agents on mobile devices

Một vài chú ý khi xây dựng file cấu hình:

MIDlet bắt đầu được khởi động để kích hoạt ứng dụng bool buyer trên thiết bị là jade.MicroBoot, cụ thể là front-end của JADE-LEAP. Lựa chọn agents bảo JADE-LEAP khởi chạy book buyer agent trong thời gian khởi động. Lựa chọn exitwhenempty bảo JADE kết thúc ngay khi người dùng đóng book buyer agent.%C được sử dụng để gán tên cho book buyer agent đang được khởi chạy. Ở thời điểm khởi động, JADE sẽ thay thế %C bằng tên của split container vì vậy book buyer agent sẽ có tên là <container-name>-book-buyer. Cách này đảm bảo tên của agent được nhất quán và thường được dùng khi kết nối mediator tới một hệ thống có khả năng phát hiện số điện thoại (msisdn) của thiết bị khi front-end đang khởi động như được đề cập trong phần 8.5.5.3. Trong trường hợp này, book buyer agent sẽ có tên <user-phone-number>-book-buyer.Bộ MIDlet cũng chứa MIDlet jade.util.leap.OutputViewer, đây là một tiện ích để kiểm tra lại những cái đã in ra

2. Hướng dẫn chạy chương trình BookTradingCài đặt classpth - cài đặt biến môi trường cho jade- cài đặt biến môi trường cho jdk

Lê Minh Hải_D07CNPM2 Page 63

Page 64: Lê Minh Hải

Agents on mobile devices

Chạy GUI của jade bằng lệnh ở cmdJava –cp <path> jade.Boot –guiPath: là đường dẫn đến file jade,jar trong thư viện jadeVí dụ: java –cp C:\jade\lib\jade.jar jade.Boot –gui

Lê Minh Hải_D07CNPM2 Page 64

Page 65: Lê Minh Hải

Agents on mobile devices

Build sourcecodeChạy file filename.jad trong thư mục dist của sourcecode

Lê Minh Hải_D07CNPM2 Page 65

Page 66: Lê Minh Hải

Agents on mobile devices

Lê Minh Hải_D07CNPM2 Page 66

Page 67: Lê Minh Hải

Agents on mobile devices

Chọn start

Lê Minh Hải_D07CNPM2 Page 67

Page 68: Lê Minh Hải

Agents on mobile devices

Tạo 2 agent buyer và seller

Lê Minh Hải_D07CNPM2 Page 68

Page 69: Lê Minh Hải

Agents on mobile devices

Lê Minh Hải_D07CNPM2 Page 69

Page 70: Lê Minh Hải

Agents on mobile devices

Sau đây là hình ảnh mua bán sách thành công trên di động:

Lê Minh Hải_D07CNPM2 Page 70

Page 71: Lê Minh Hải

Agents on mobile devices

KẾT LUẬNHiện nay trên thế giới, phát triển dựa trên Agent ngày càng được chú trọng. Không

nằm ngoài xu hướng đó, giờ đây chúng ta đã có thể phát triển các ứng dụng dựa trên Agent trên các thiết bị di động như một phần của hệ thống của chúng ta.

Qua việc tìm hiểu và nghiên cứu, chúng ta đã biết được cách sử dụng mobile agent và ngôn ngữ nội dung trong JADE để xây dựng các ứng dụng đa agent phân tán và phức tạp. Qua đây, chúng ta hiểu kỹ hơn về các thành phần chính của j2me, JADE,và việc ra đời LEAP trong việc xây dựng ứng dụng. Chúng ta cũng biết được các loại ngôn ngữ nội dung mà JADE hỗ trợ cũng như sự khác nhau của chúng. Tuy nhiên, vì thời gian có hạn nên bài viết chỉ dừng lại ở những đặc trưng cơ bản của đề tài và không tránh khỏi sai sót. Xin chân thành cảm ơn thầy giáo đã tạo điều kiện để em hoàn thành đề tài này.

Tài liệu tham khảo[1] Fabio Bellifemine, Giovanni Caire, Dominic Greenwood, Developing Multi Agent

Systems with JADE.: Willey, 2007.

[2] Giovanni Caire, "Jade Tutorial: application - defined content languages and ontologies," 2002.

[3] A. R. Tripathi, T. Ahmed, N. Karnik. Experiences and the future challenges in

the mobile agent programming. Microprocessor and Microsystems Journal,Elsevier, 2001.

[4] D. Milojicic, Mobile agent applications, IEEE Concurrency, July-September1999.

Các link tham khảo: [1] http://today.java.net/pub/a/today/2005/02/09/j2me1.html

[2] http://www.cs.armstrong.edu/burge/pdf/huc/01_J2ME_Overview.pdf

[3] http://www.onjava.com/pub/a/onjava/2001/03/08/J2ME.html

[4] http://developers.sun.com/techtopics/mobility/midp/articles/wtoolkit/

Lê Minh Hải_D07CNPM2 Page 71