Tất cả các applet java ở đâu? Cài đặt một ứng dụng java cho hệ thống trực tuyến của ngân hàng-khách hàng.

Trong bài viết này, tôi sẽ cho bạn biết cách khắc phục Lỗi Java applet không được tải. Trong hơn một thập kỷ, đã có một số lượng lớn công nghệ web. Vì vậy, ví dụ, đối với đa phương tiện và trò chơi đơn giản Flash đã được sử dụng và cho các hoạt động có yêu cầu bảo mật cao - ActiveX và Java. Nhưng nếu Microsoft ActiveX được phát triển từ lâu đã chìm vào quên lãng, thì Java EE vẫn tiếp tục phù hợp cho đến ngày nay. Và vấn đề không phải là không có cái nào xứng đáng và đơn giản hơn cho người dùng cuối tương tự (chúng mới xuất hiện vài năm trước), vấn đề là một số tổ chức đã đầu tư hàng chục và hàng trăm ngàn đô la vào việc phát triển các ứng dụng dựa trên các công nghệ này, và họ đơn giản là không thể từ chối chúng. Đó là lý do tại sao, khi người dùng cố gắng đăng nhập vào dịch vụ nhất định có thể thấy thông báo: Java applet không được tải, bạn phải làm gì nếu bạn gặp nó, chúng ta sẽ xem xét nó bên dưới.

Một số ứng dụng khách VTB24 gặp lỗi khi cố gắng đăng nhập vào VTB24 trực tuyến. Nó liên quan chính xác đến thực tế là ứng dụng Java chưa được cài đặt trên hệ thống hoặc nó đã bị vô hiệu hóa.

Để khắc phục lỗi tải xuống Java này và đăng nhập vào bảng điều khiển tài khoản của bạn mà không gặp bất kỳ sự cố nào, bạn sẽ cần làm theo một vài bước đơn giản.

Phải làm gì nếu Java applet không được tải

Trước hết, bạn cần cài đặt phần mềm... Nếu nó được tải xuống nhưng chưa được bật, hãy tải xuống vẫn tiếp tục - hãy để phiên bản mới nhất được cài đặt. Đối với điều này:

  1. Truy cập trang tải xuống Java trên trang web chính thức;
  2. Nguồn lực phải xác định một cách độc lập hệ điều hành và cung cấp một liên kết tải xuống phiên bản bạn muốn TRÊN;
  3. Nhấp vào nút màu đỏ "Tải xuống Java miễn phí";
  4. Sau đó, quá trình tải xuống sẽ ngay lập tức bắt đầu;
  5. Chạy tệp đã tải xuống và làm theo hướng dẫn;
  6. Khởi động lại trình duyệt của bạn.

Cần lưu ý rằng trong Google chrome(kể từ phiên bản 42) ứng dụng Java không được hỗ trợ chính thức vì công ty cho rằng công nghệ này đã lỗi thời. Do đó, để sử dụng Java, hãy khởi chạy một trình duyệt web khác, chẳng hạn như FireFox.

Để tránh sự cố với Java, hãy làm theo các bước sau:

  1. Khởi động Firefox (nếu nó bị thiếu, sau đó tải xuống và cài đặt nó từ trang web chính thức);
  2. Mở menu chương trình và nhấp vào "Tiện ích bổ sung";
  3. Khi ở trên trang tương ứng, hãy chuyển đến tab "Plugin";
  4. Đối diện với mục "Mô-đun nền tảng Java" sẽ có một công tắc - hãy đặt nó ở vị trí "Luôn bật" (nếu nó đã được bật rồi thì không cần làm gì cả);
  5. Bạn có thể khởi động lại trình duyệt của mình.

Sau khi thực hiện những hành động này truy cập trang web mà bạn quan tâm - tất cả chức năng của nó (tất nhiên, nếu nó không sử dụng các công nghệ của bên thứ ba khác) sẽ hoạt động và sẽ không có lỗi khi tải ứng dụng Java.

Có thể làm gì nếu không có Java

Nếu bạn không cần sử dụng các ứng dụng web (như trường hợp với ứng dụng khách ngân hàng VTB24) được tạo trên nền tảng Java EE, thì bạn không cần applet tương ứng. Dần dần thậm chí các công ty lớn chuyển sang phù hợp hơn ngay bây giờ cho công nghệ web giúp người dùng cuối tương tác với các chức năng của dịch vụ dễ dàng hơn nhiều.

Liên hệ với

Applet là các ứng dụng nhỏ được lưu trữ trên các máy chủ Internet, được chuyển đến một máy khách qua mạng, được cài đặt tự động và chạy tại chỗ như một phần của Tài liệu HTML... Khi một applet đến một máy khách, quyền truy cập của nó vào các tài nguyên bị hạn chế.

Dưới đây là nguồn chương trình ứng dụng HelloWorld chuẩn:

nhập java.awt. *;
nhập java.applet. *;
lớp công khai HelloWorldApplet mở rộng Applet (

g.drawString ("Xin chào Thế giới!", 20, 20);
} }

Applet này bắt đầu bằng hai dòng nhập tất cả các gói phân cấp java.applet và java.awt. Hơn nữa trong ví dụ của chúng ta, có phương thức paint, phương thức này thay thế phương thức cùng tên của lớp Applet. Khi phương thức này được gọi, nó được truyền một đối số có chứa tham chiếu đến đối tượng Graphics. Cái sau được sử dụng để hiển thị applet của chúng tôi. Với phương thức drawString được gọi với

với đối tượng kiểu Graphics này, chuỗi “Hello World” được hiển thị ở vị trí màn hình (20,20).

Để khởi chạy applet này bằng trình duyệt, chúng ta sẽ phải viết vài dòng html-text.


Bạn có thể đặt những dòng này trong một tệp html riêng biệt ( HelloWorldApplet.html), hoặc chèn chúng vào văn bản của chương trình này dưới dạng nhận xét và chạy chương trình appletviewer với mã nguồn của nó làm đối số.

Thẻ HTML

Nhãn được sử dụng để khởi chạy một applet từ cả tài liệu HTML và chương trình appletviewer. Chương trình appletviewer thực thi mọi thẻ mà nó tìm thấy trong một cửa sổ riêng biệt, trong khi các trình duyệt cho phép đặt nhiều applet trên một trang. Cú pháp thẻ E T> hiện là:

CODE = appletFile
OBJECT = appletSerialFile
WIDTH = pixel
HEIGHT = pixel



>
[< PARAM NAME = AttributeNamel VALUE = AttributeValuel >]
[< PARAM NAME = AttributeName2 VALUE = AttributeValue2 >]

CODE = appletClassFile

bắt buộc thuộc tính chỉ định tên của tệp chứa mã applet đã dịch. Tên tệp được chỉ định liên quan đến cơ sở mã, nghĩa là từ thư mục hiện tại hoặc từ thư mục được chỉ định trong thuộc tính CODEBASE. Trong Java 1.1, thuộc tính OBJE có thể được sử dụng thay thế cho thuộc tính này CT.

OBJECT = appletClassSerialFile

Chỉ định tên của tệp chứa applet được tuần tự hóa mà từ đó cái sau sẽ được khôi phục. Khi bạn khởi động một applet được định nghĩa theo cách này, phương thức start () sẽ được gọi, không phải phương thức init (). Đối với một applet, bạn phải đặt thuộc tính CODE hoặc thuộc tính OBJECT, nhưng bạn không thể đặt các thuộc tính này cùng một lúc.

RỘNG RÃI và CHIỀU CAO - bắt buộc các thuộc tính chỉ định kích thước ban đầu của vùng hiển thị của applet.

ARCHIVE = jarFiles

Chỉ định danh sách các tệp jar (được phân tách bằng dấu phẩy) được tải trước vào trình duyệt Web. Các tệp lưu trữ này có thể chứa tệp lớp, hình ảnh, âm thanh và bất kỳ tài nguyên nào khác mà applet cần. Để tạo kho lưu trữ, tiện ích JAR được sử dụng, cú pháp gọi của nó giống với lệnh gọi tới lệnh TAR Unix (để biết mô tả chi tiết về các tiện ích, hãy xem

phụ lục 1 ) :

c: \> jar cf soundmap.jar * .class image.gif sound.wav

Rõ ràng, chuyển bình nén nâng cao hiệu quả công việc. Do đó, nhiều công cụ phát triển (Lotus JavaBeans, Borland JBuilder) đã có các công cụ để xuất bản các applet dưới dạng tệp jar.

CODEBASE = codebaseURL

không bắt buộc một thuộc tính chỉ định URL cơ sở của mã applet, là thư mục để tìm kiếm trong tệp thực thi applet (được chỉ định trong thuộc tính CODE). Nếu thuộc tính này không được chỉ định, thư mục cho tài liệu HTML đã cho được sử dụng theo mặc định. CODEBASE không phải trỏ đến cùng một nút mà từ đó nó đã được khởi động H TML tài liệu.

ALT = alternateAppletText

Dấu hiệu ALT - không bắt buộc một thuộc tính chỉ định một tin nhắn văn bản ngắn sẽ được hiển thị nếu trình duyệt đang được sử dụng nhận ra cú pháp của thẻ , nhưng không biết cách thực thi các applet. Điều này không giống như văn bản HTML có thể được chèn vào giữa cho các trình duyệt hoàn toàn không hỗ trợ applet.

NAME = appletInstanceName

không bắt buộc một thuộc tính được sử dụng để chỉ định tên cho phiên bản này của applet. Việc đặt tên cho các applet là cần thiết để các applet khác trên cùng một trang có thể tìm thấy và giao tiếp với chúng. Để truy cập lớp con MyApplet của lớp Applet có tên “Duke”, bạn sẽ viết:

MyApplet a = getAppletContext (). GetApplet ("Duke");

Sau khi bạn đã có được một xử lý đối với một phiên bản có tên của một applet theo cách này, bạn có thể gọi các phương thức của nó theo cách giống như cách bạn làm với bất kỳ đối tượng nào khác.

ALIGN = căn chỉnh

không bắt buộc một thuộc tính chỉ định kiểu căn chỉnh của applet. Thuộc tính này được xử lý giống như trong thẻ IMG, các giá trị có thể có của nó là LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM, ABSBOTTOM.

Này không bắt buộc thuộc tính thiết lập độ rộng của khoảng trắng tính bằng pixel ở đầu và cuối applet (VSPACE) và ở bên trái và bên phải của nó (HSPACE). Chúng được diễn giải theo cách giống như các thuộc tính cùng tên trong thẻ IMG.

PARAM NAME = appletAttribute1 VALUE = value1

Thẻ này cho phép bạn chuyển các đối số bắt buộc từ trang HTML sang applet. Applet nhận được các thuộc tính này bằng cách gọi phương thức getParameter (), được mô tả bên dưới.

Thông số truyền

getParameter (Chuỗi)

Phương thức getParameter trả về giá trị Chuỗi tương ứng với tên tham số đã chỉ định. Nếu bạn yêu cầu giá trị của một số loại khác làm tham số, bạn phải tự chuyển đổi chuỗi tham số. Bây giờ bạn sẽ thấy một số ví dụ về việc sử dụng phương thức getParameter để truy xuất các tham số từ ví dụ bên dưới:


Đây là cách mỗi tham số này được truy xuất:

String FontName = getParameter ("fontName");
String FontSize = Integer.parseInt (getParameter ("fontSize"));
Chuỗi hàng đầu = Float.valueOf (getParameter ("hàng đầu"));
String PaidUp = Boolean.valueOf (getParameter ("accountEnabled"));

Ngữ cảnh Applet

Base và getCodeBase

Bạn có thể đang viết các applet cần tải dữ liệu và văn bản một cách rõ ràng. Java cho phép một applet tải dữ liệu từ thư mục chứa tài liệu HTML đã khởi chạy applet (cơ sở tài liệu - getDocumentBase) và từ thư mục mà từ đó tệp lớp có mã applet được tải (code base - getCodeBase).

AppletContext và showDocument

AppletContext là một phương tiện để lấy thông tin về môi trường của một applet đang chạy. Phương thức showDocument làm cho tài liệu được chỉ định bởi tham số của nó được hiển thị trong khung hoặc cửa sổ trình duyệt chính.

Gỡ lỗi in

Bản in gỡ lỗi có thể được xuất ra ở hai nơi: tới bảng điều khiển và dòng trạng thái của trình xem applet. Để hiển thị thông báo trên bảng điều khiển, bạn cần viết:

System.out.println (“Xin chào, chào mừng bạn đến với Java”);

Thông báo trên bảng điều khiển rất tiện dụng vì bảng điều khiển thường không hiển thị với người dùng applet và có đủ chỗ cho một số thông báo. Trong trình duyệt Netscape, Bảng điều khiển Java được truy cập từ menu Tùy chọn trong “Hiển thị Bảng điều khiển Java”.

Phương thức showStatus hiển thị văn bản trong khu vực trạng thái của appletviewer hoặc trình duyệt hỗ trợ Java. Chỉ một dòng thông báo có thể được hiển thị trong khu vực trạng thái.

Thứ tự khởi tạo Applet

Dưới đây là thứ tự mà các phương thức của lớp Applet được gọi, kèm theo giải thích về việc bạn có cần ghi đè phương thức này hay không.

Phương thức init được gọi đầu tiên. Đây là nơi bạn phải khởi tạo các biến của mình.

Phương thức bắt đầu được gọi ngay sau phương thức init. Nó cũng được sử dụng như một điểm bắt đầu để tiếp tục công việc sau khi applet đã bị dừng. Trong khi phương thức init chỉ được gọi một lần, khi applet được tải, start được gọi mỗi khi tài liệu HTML chứa applet được hiển thị trên màn hình. Vì vậy, ví dụ: nếu người dùng điều hướng đến một trang WWW mới và sau đó quay lại trang với applet, applet sẽ tiếp tục từ phương thức bắt đầu.

Phương thức paint được gọi mỗi khi applet bị hỏng. AWT giám sát trạng thái của các cửa sổ trên hệ thống và lưu ý các trường hợp như chồng chéo cửa sổ applet với cửa sổ khác. Trong những trường hợp như vậy, sau khi applet hiển thị trở lại, phương thức paint được gọi để khôi phục hình ảnh của nó.

Phương thức cập nhật mặc định của lớp Applet trước tiên sơn applet với màu nền mặc định và sau đó gọi phương thức paint. Nếu bạn tô nền bằng một màu khác trong phương thức sơn, người dùng sẽ thấy màu mặc định nhấp nháy mỗi khi phương thức cập nhật được gọi.

- tức là, bất cứ khi nào bạn vẽ lại applet. Để tránh điều này, bạn cần ghi đè phương thức cập nhật. Nói chung, bạn cần thực hiện các thao tác sơn trong phương thức cập nhật và trong phương thức sơn mà AWT sẽ gọi, chỉ cần gọi cập nhật.

Phương thức dừng được gọi khi trình duyệt thoát khỏi tài liệu HTML có chứa applet. Khi phương thức dừng được gọi, applet vẫn đang chạy. Bạn nên sử dụng phương pháp này để tạm ngưng các quy trình con không bắt buộc phải chạy khi applet ẩn. Sau khi người dùng truy cập lại trang này, bạn sẽ cần tiếp tục công việc của họ trong phương pháp bắt đầu.

Phương thức hủy được gọi khi môi trường (ví dụ: trình duyệt Netscape) quyết định rằng applet nên được xóa hoàn toàn khỏi bộ nhớ. Trong phương pháp này, bạn cần giải phóng tất cả các tài nguyên mà applet đã sử dụng.

Vẽ lại

Hãy quay lại ứng dụng HelloWorldApplet. Trong đó, chúng tôi đã thay thế phương pháp paint, cho phép applet vẽ. Lớp Applet cung cấp các phương pháp vẽ bổ sung để vẽ các phần của màn hình một cách hiệu quả. Khi phát triển các applet đầu tiên của bạn, đôi khi rất khó hiểu tại sao phương thức cập nhật không bao giờ được gọi. Có ba biến thể của phương pháp sơn lại để bắt đầu cập nhật.

Phương pháp sơn lại được sử dụng để buộc applet phải sơn lại. Đến lượt mình, phương thức này gọi phương thức cập nhật. Tuy nhiên, nếu hệ thống của bạn chậm hoặc tải nhiều, phương pháp cập nhật có thể không được gọi. AWT có thể hợp nhất các yêu cầu vẽ lại gần đúng thời gian để phương thức cập nhật có thể được gọi không thường xuyên. Nếu bạn muốn đạt được sự thay đổi nhịp nhàng của các khung hình ảnh, hãy sử dụng phương pháp sơn lại (thời gian) - điều này sẽ làm giảm số lượng khung hình được vẽ sai thời điểm.

Bạn có thể gọi phương thức sơn lại bằng cách đặt thời hạn cho việc sơn lại (khoảng thời gian này được chỉ định bằng mili giây so với thời gian sơn lại được gọi).

sơn lại (x, y, w, h)

Phiên bản này hạn chế cập nhật màn hình trong một hình chữ nhật nhất định, chỉ những phần của màn hình nằm trong đó mới được thay đổi.

sơn lại (thời gian, x, y, w, h)

Phương pháp này là sự kết hợp của hai phương pháp trước đó.

Định cỡ hình ảnh đồ họa.

Hình ảnh đồ họa được vẽ trong một hệ tọa độ đồ họa máy tính tiêu chuẩn, trong đó tọa độ chỉ có thể nhận các giá trị nguyên, và các trục được hướng từ trái sang phải và từ trên xuống dưới. Applet và hình ảnh có phương thức kích thước trả về đối tượng Thứ nguyên. Khi bạn nhận được đối tượng Thứ nguyên, bạn cũng có thể nhận các giá trị của các biến chiều rộng và chiều cao của nó:

Thứ nguyên d = size ();
System.out.println (d. Chiều rộng + "," + d.height);

Các phương pháp đơn giản của lớp đồ họa

Các đối tượng của lớp Graphics có một số chức năng vẽ đơn giản. Mỗi hình dạng có thể được vẽ đầy hoặc chỉ có thể vẽ đường viền của nó. Mỗi phương thức drawRect, drawOval, fillRect và fillOval được gọi với bốn tham số: int x, int y, int width và int height. Các tọa độ x và y xác định vị trí của góc trên bên trái của hình dạng, các thông số chiều rộng và chiều cao xác định giới hạn của nó.

drawline (int x1, int y1, int x2, int y2)

Phương pháp này vẽ một đoạn thẳng giữa các điểm có tọa độ (x1, y1) và (x2, y2). Những đường này là những đường thẳng đơn giản 1 pixel. Không cung cấp hỗ trợ cho các loại bút khác nhau và trọng lượng dòng khác nhau.

drawArc và fillArc

Hình thức của phương thức drawArc và fillArc như sau:

drawArc (int x, int y, int width, int height, int startAngle, int scanAngle)

Các phương thức này vẽ (fillArc điền) một cung tròn được giới hạn bởi một hình chữ nhật (x, y, width, height) bắt đầu từ startAngle và có kích thước góc là scanAngle. Độ 0 tương ứng với vị trí của kim giờ ở vị trí 3 giờ, góc được tính ngược chiều kim đồng hồ (ví dụ: 90 độ tương ứng với 12 giờ, 180 đến 9 giờ, v.v.).

drawPolyson và fillPolyson

Nguyên mẫu cho các phương pháp này:

drawPolygon (int, int, int)

fillPolygon (int, int, int)

Phương thức drawPolygon vẽ một đường viền đa giác (polyline) được xác định bởi hai mảng chứa tọa độ x và y của các đỉnh, tham số thứ ba của phương thức là số cặp tọa độ. Phương thức drawPolygon không tự động đóng đường dẫn đã vẽ. Đối với hình chữ nhật được đóng lại, tọa độ của điểm đầu tiên và điểm cuối cùng phải khớp với nhau.

Hệ thống màu AWT đã được thiết kế để hoạt động với tất cả các màu. Sau khi một màu được chỉ định, Java sẽ tìm kiếm dải màu hiển thị cho màu phù hợp nhất với nó. Bạn có thể yêu cầu các màu theo ngữ nghĩa mà bạn đã quen - như một hỗn hợp của màu đỏ, xanh lá cây và xanh lam, hoặc là sự kết hợp của màu sắc, độ bão hòa và độ sáng. Bạn có thể sử dụng các biến tĩnh của lớp Color.black để đặt bất kỳ màu nào thường được sử dụng - đen, trắng, đỏ, lục, lam, lục lam, vàng, đỏ tươi, cam, hồng, xám, darkGray và lightGray.

Một trong ba hàm tạo được mô tả dưới đây được sử dụng để tạo màu mới.

Màu (int, int, int)

Các tham số cho hàm tạo này là ba số nguyên từ 0 đến 255 cho các thành phần màu đỏ, xanh lá cây và lục lam.

Hàm tạo này có một đối số số nguyên duy nhất đóng gói các thành phần màu đỏ, xanh lá cây và xanh lam. Màu đỏ chiếm các bit 16-23, xanh lục - 8-15, xanh lam - 0-7.

Màu (nổi, nổi, nổi)

Các hàm tạo màu cuối cùng, Color (float, float, float), lấy ba float (từ 0,0 đến 1,0) làm tham số cho các màu cơ bản đỏ, lục và lam.

Các phương thức của lớp Màu

HSBtoRGB (float, float, float)
RGBtoHSB (int, int, int, float);
}
} }

Các ví dụ trước đã sử dụng phương thức drawString (String, x, y). Phương thức này xuất ra một chuỗi sử dụng phông chữ và màu sắc hiện tại. Điểm có tọa độ (x, y) tương ứng với đường viền bên trái của đường cơ sở của các ký tự, và không nằm ở góc trên bên trái, như trường hợp của các phương pháp vẽ khác. Đọc phần về số liệu phông chữ ở cuối chương này để hiểu cách hình chữ nhật bao quanh chuỗi được định vị.

Sử dụng phông chữ

Phương thức khởi tạo lớp Phông chữ tạo một phông chữ mới với tên, kiểu và kích thước điểm được chỉ định:

Font StrongFont = new Font ("Helvetica", Font.BOLD | Font.ITALIC, 24);

Các tên phông chữ hiện có sẵn là Dialog, Helvetica, TimesRoman, Courier và Symbol. Có ba biến tĩnh để chỉ định kiểu phông chữ trong họ này. - Font.PLAIN, Font.BOLD và Font.ITALIC, tương ứng với kiểu thông thường, in nghiêng và in đậm.

Bây giờ chúng ta hãy xem xét một vài phương pháp bổ sung.

getFamily và getName

Phương thức getFamily trả về một chuỗi với tên của họ phông chữ. Phương thức getName có thể được sử dụng để lấy tên hợp lý của phông chữ.

Phương thức này trả về một số nguyên đại diện cho kích thước phông chữ tính bằng điểm.

Phương thức này trả về một số nguyên tương ứng với kiểu phông chữ. Kết quả có thể được so sánh từng chút một với các biến tĩnh của lớp Phông chữ: - PLAIN, BOLD và ITALIC.

isBold, isItalic, isPlain

Các phương thức này trả về true nếu kiểu phông chữ tương ứng là đậm, nghiêng hoặc trơn.

Định vị và phông chữ

: FontMetrics

Java sử dụng nhiều loại phông chữ khác nhau và lớp FontMetrics cho phép lập trình viên kiểm soát chính xác vị trí của văn bản được hiển thị trong applet. Trước hết, chúng ta cần hiểu một số thuật ngữ phổ biến được sử dụng khi làm việc với phông chữ:

  • Chiều cao
  • (chiều cao) - kích thước từ trên xuống dưới của ký tự cao nhất trong phông chữ.
  • Đường cơ sở
  • (đường cơ sở) - đường thẳng hàng với các ranh giới dưới của các ký hiệu (không bao gồm phần dưới).
  • Trỗi dậy
  • (đi lên) - khoảng cách từ đường cơ sở đến đỉnh của biểu tượng.
  • Giảm bớt
  • (descent) - khoảng cách từ đường cơ sở đến điểm dưới cùng của biểu tượng.

Sử dụng FontMetrics

Sau đây là một số phương thức của lớp FontMetrics:

Phương thức này trả về độ dài của chuỗi được chỉ định cho phông chữ đã cho.

byteWidth, charsWidth

Các phương thức này trả về độ rộng của mảng byte được chỉ định cho phông chữ hiện tại.

getAscent, getDescent, getHeight

Các phương thức này trả về độ tăng, giảm và chiều rộng của phông chữ. Tổng số tăng và giảm cho biết tổng chiều cao phông chữ. Chiều cao phông chữ không chỉ là khoảng cách từ điểm thấp nhất của chữ g và chữ y đến điểm cao nhất của chữ T viết hoa và các ký tự như dấu ngoặc đơn. Chiều cao bao gồm gạch dưới, v.v.

getMaxAscent và getMaxDescent

Các phương pháp này phục vụ để tối đa hóa sự tăng và giảm của tất cả các ký tự trong phông chữ.

Căn giữa văn bản

Bây giờ chúng ta hãy sử dụng các phương thức của đối tượng FontMetrics để lấy độ tăng, giảm và độ dài của đường được vẽ và sử dụng các giá trị này để căn giữa nó trong applet của chúng ta.

/*
*
*

*
*/
nhập java.applet. *;
nhập java.awt. *;
lớp công khai HelloWorld mở rộng Applet (
Final Font f = new Font ("Helvetica", Font.BOLD, 18);
public void paint (Đồ họa g) (
Thứ nguyên d = this.size ();
g.setColor (Màu. trắng);
g.fillRect (0,0, d. width, d.height);
g.setColor (Màu. đen);
g.setFont (f);
drawCenteredString ("Xin chào Thế giới!", d.width, d.height, g);
g.drawRect (0,0, d.width-1, d.height-1);
}
public void drawCenteredString (String s, int w, int h, Graphics g) (
FontMetrics fm = g.getFontMetrics ();
int x = (w - fm.stringWidth (s)) / 2;
int y = (fm.getAscent () + (h - (fm.getAscent () + fm.getDescent ())) / 2);
g.drawString (s, x, y);
} }

Đây là giao diện của applet khi hoạt động -

Trong bài viết này, tôi sẽ cố gắng giải thích những điều cơ bản về lập trình bằng ngôn ngữ Delphi một cách đơn giản và rõ ràng nhất có thể.

Java cho hình nộm. Bài 3. Một applet đơn giản.

Cuối cùng, chúng ta đi đến điều quan trọng nhất: Lập trình Java cho Web, vì hôm nay chúng ta sẽ viết applet đầu tiên của mình. Tất nhiên, hãy bắt đầu với câu đơn giản nhất, "Hello World!" Và đây là văn bản của applet này:

nhập khẩu java . applet . Applet ;

nhập khẩu java . awt . Đồ họa ;

HelloApplet lớp công khai kéo dài Applet {

Sơn rỗng công cộng ( Đồ họa g ) {

NS . drawString ( "Chào thế giới!" , 0 , 50 );

}

}

Trong ví dụ này, chúng tôi liên kết các thư viện Applet để truy cập lớp applet và Graphics để sử dụng chức năng đồ họa. Trong các applet, chúng tôi không thể hiển thị văn bản bằng thư viện Hệ thống, như chúng tôi đã làm khi viết một ứng dụng bảng điều khiển (xem và). Do đó, ở đây chúng tôi sẽ sử dụng các phương pháp hơi khác một chút. Cụ thể, lớp Graphics, lớp này vẽ trên vùng trường của một applet. Và một điểm khác biệt nữa so với ứng dụng console. Không có lớp nào có phương thức main (). Để triển khai applet, chúng ta khai báo một lớp là con của lớp Applet:

lớp công khai HelloApplet kéo dài Applet

Điều này có nghĩa là lớp HelloApplet mới của chúng ta sẽ có tất cả các trường và phương thức giống như Applet, ngoại trừ những phương thức mà chúng ta đã ghi đè. Trong trường hợp này, nó là sơn - phương pháp chịu trách nhiệm sơn đối tượng. Chương trình được đặt trong nó sẽ chạy mỗi khi applet được hiển thị. Trong trường hợp này, đây là chương trình một dòng:

NS . drawString ( "Chào thế giới!" , 0 , 50 );

sẽ vẽ trên màn hình dòng chữ "Hello, world!" tại điểm có tọa độ 0,50.

Và do đó, chúng tôi biên dịch chương trình. Chúng ta sẽ có một tệp HelloApplet.class. Bây giờ chúng ta hãy kiểm tra nó bằng cách tạo một applet đơn giản chứa một tệp HTML:

"HelloApplet.class" Chiều rộng = 200 Chiều cao = 200>

Giao diện đồ họa, hình ảnh và hình ảnh có thể được triển khai trong các applet. Applet là một loại ứng dụng đồ họa được triển khai dưới dạng các lớp Java được lưu trữ trên máy chủ Internet, được chuyển đến máy khách qua mạng và được trình duyệt tự động cài đặt và chạy như một phần của tài liệu HTML. Applet cho phép bạn chèn các trường vào tài liệu, nội dung của các trường đó thay đổi theo thời gian, tổ chức các "đường leo", menu, hoạt ảnh và thực hiện các phép tính trên trang khách. Applet được thực thi bởi trình duyệt khi tài liệu HTML được hiển thị hoặc được xem bởi chương trình appletviewer. Applet không thể ghi tệp hoặc đọc thông tin từ tệp. Những hạn chế này liên quan đến vấn đề bảo mật trên máy khách, vì máy khách không muốn chạy một con ngựa thành Troy trên máy tính của họ. Có một số cấp độ bảo mật do máy khách đặt cho các applet được tải xuống từ máy chủ (applet đáng tin cậy). Lớp Applet cung cấp giao diện giữa các applet và môi trường của chúng. Applet kế thừa từ lớp Applet từ gói java. applet từ gói AWT hoặc lớp con của nó JApplet từ gói Swing.

Có một số phương thức lớp Applet kiểm soát việc tạo và thực thi một applet trên một trang Web. Applet không cần phương thức chủ chốt (), mã khởi động được đặt trong phương thức trong đó ()... Phương pháp quá tải trong đó () tự động được gọi khi applet được tải để thực hiện khởi tạo ban đầu. Phương pháp bắt đầu ()được gọi mỗi khi applet được đưa vào trường xem của trình duyệt để bắt đầu hoạt động. Phương pháp ngừng lại ()được gọi mỗi khi applet khuất khỏi trình duyệt Web để cho phép applet hoàn thành các hoạt động của nó. Phương pháp NSestroy ()được gọi khi applet bắt đầu tải khỏi trang để thực hiện giải phóng tài nguyên cuối cùng. Ngoài các phương thức này, khi applet được thực thi, phương thức sẽ tự động được khởi chạy. Sơn() lớp Thành phần... Phương pháp Sơn() không được gọi một cách rõ ràng, mà chỉ từ các phương thức khác, ví dụ như từ một phương thức Sơn lại() nếu cần vẽ lại.

Dưới đây là một ví dụ về một applet sử dụng các phương thức trong đó() , Sơn() , phương pháp setColor() thiết lập màu ký tự và phương pháp drawString() đường vẽ.

/ * ví dụ # 1: đầu ra ngày:DateApplet.java */

Bưu kiện chapt11;

nhập khẩu java.awt.Color;

nhập khẩu java.awt.Graphics;

nhập khẩu java.util.Calendar;

nhập khẩu java.util.Formatter;

nhập khẩu javax.swing.JApplet;

công cộng lớp DateApplet kéo dài JApplet (

riêngĐịnh dạng dateFmt = MớiĐịnh dạng ();

riêng Thời gian định dạngFmt = MớiĐịnh dạng ();

công cộng vô hiệu trong đó () (

setSize (180, 100);

Lịch c = Calendar.getInstance ();

Kỷ nguyên chuỗi = "";

nếu như(c.get (Calendar.ERA) == 1)

dateFmt.format ("% tA% td.% tm.% tY trong năm"

Era, c, c, c, c);

timeFmt.format ("% tT", c);

công cộng vô hiệu sơn (Đồ họa g) (

g.setColor (Màu.RED);

g.drawString ("Applet đã bắt đầu lúc" + timeFmt,

10, getHeight () / 2);

g.setColor ( Mới Màu (0,87,127));

g.drawString (dateFmt.toString (), 13,

getHeight () - 10);

Lúa gạo. 11.2. Hiển thị chuỗi và ngày tháng

Phần tử ngày tháng được truy cập bằng cách sử dụng lớp java. sử dụng. Lịch... Màu của các ký tự hiển thị được đặt bằng cách sử dụng các trường lớp Màu sắc.

Sau khi biên dịch, tên của lớp chứa mã bytecode của applet được đặt trong thẻ < applet tùy chọn > applet> Tài liệu HTML. Ví dụ:

DateApplet.lớp

chiều rộng = 250 chiều cao = 250>

Trình thực thi của tài liệu HTML là trình duyệt khởi chạy applet tương ứng với liên kết.

Hầu hết các phương thức đồ họa được sử dụng trong các applet, cũng như các phương thức được sử dụng trong ví dụ setColor() , drawString () , - các phương thức của lớp cơ sở trừu tượng java. awt. Đồ họa... Lớp Đồ họađại diện cho một bối cảnh đồ họa để vẽ, sau đó được ánh xạ tới một thiết bị vật lý. Các phương thức Applet lấy đối tượng lớp Đồ họa(ngữ cảnh đồ họa) dưới dạng một tham số và với nó - màu hiện tại, phông chữ, vị trí con trỏ. Việc thiết lập ngữ cảnh thường được thực hiện bằng các phương pháp cập nhật() hoặc Sơn() .

Một số phương thức lớp được liệt kê bên dưới Đồ họa:

vẽ đường thẳng(int x1, int y1, int x2, int y2)- vẽ một đường thẳng;

drawRect (int x, int y, int width, int height)fillRect (int x, int y, int width, int height)- vẽ một hình chữ nhật và một hình chữ nhật được tô màu;

draw3DRect (int x, int y, int width, int height, boolean raise)- vẽ một hình chữ nhật ba chiều;

drawRoundRect (int x, int y, int width, int height,int arcWidth, int arcHeight)- vẽ một hình chữ nhật tròn;

drawOval (int x, int y, int width, int height)- vẽ một hình bầu dục;

drawPolygon (int xPoints, int yPoints, int nPoints)- vẽ một đa giác (polygon) được cho bởi các mảng tọa độ NSy;

drawPolygon (Đa giácP) - vẽ một đa giác, được đưa ra bởi đối tượng Đa giác;

drawPolyline(NSxPoints, NSyPoints, NSnPoints) - vẽ một chuỗi các đường được kết nối bởi các mảng NSy;

drawArc (int x, int y, int width, int height, int startAngle, int arcAngle)- vẽ một cung của một đường tròn;

drawImage (Hình ảnh img, int x, int y, Màu bgcolor, Trình quan sát ImageObserver)- chèn một hình ảnh;

drawString(Chuỗi str, int x, int y)- vẽ một đường thẳng;

setColor (Màu c), getColor ()- thiết lập và trả về màu hiện tại;

getFont ()- trả về phông chữ hiện tại;

setFont (Phông chữ)- bộ phông chữ mới.

Phương pháp lớp học Đồ họađược sử dụng để hiển thị đồ họa như cho các lớp Applet và cho các lớp học JApplet.

Ví dụ 2-4 dưới đây chứng minh việc sử dụng các phương thức lớp Đồ họađể rút tiền Hình ảnh đồ hoạ vào cửa sổ applet.

/ * ví dụ # 2: Hình chữ nhật 3D:Thứ tựrRect. java */

Bưu kiện chapt11;

nhập khẩu java.awt.Color;

nhập khẩu java.awt.Graphics;

nhập khẩu javax.swing.JApplet;

công cộng lớp ThrRect kéo dài JApplet (

công cộng vô hiệu draw3D (Đồ họa g, NS NS, NS y, NS chiều rộng, NS Chiều cao, booleanđược nuôi dưỡng, boolean nó đã đầy) (

g.draw3DRect (x, y, width - 1, height - 1,

g.draw3DRect (x + 1, y + 1, width - 3,

chiều cao - 3, isRaised);

g.draw3DRect (x + 2, y + 2, width - 5,

chiều cao - 5, isRaised);

nếu như(nó đã đầy)

g.fillRect (x + 3, y + 3, width - 6,

công cộng vô hiệu sơn (Đồ họa g) (

g.setColor (Màu.GRAY);

draw3D (g, 10, 5, 80, 40, thật, sai);

draw3D (g, 130, 5, 80, 40, sai, sai);

draw3D (g, 10, 55, 80, 40, thật, thật);

draw3D (g, 130, 55, 80, 40, sai, thật);

Lúa gạo. 11.3. Hình chữ nhật 3D

Túi nhựa java.awt chứa đựng con số lớn các lớp được sử dụng để hiển thị hình ảnh: Màu sắc, Nét chữ, Hình ảnh, Hình dạng, Tranh sơn dầu Vân vân. Ngoài ra, các khả năng của gói này được mở rộng bởi các gói java.awt.geom,java.awt.color,java.awt.image khác.

/* thí dụ # 3: Tòa nhà số liệu: BuildShape.java */

Bưu kiện chapt11;

nhập khẩu java.awt.Color;

nhập khẩu java.awt.Graphics;

nhập khẩu java.awt.Graphics2D;

nhập khẩu java.awt.Shape;

nhập khẩu java.awt.geom. *;

nhập khẩu javax.swing.JApplet;

công cộng lớp BuildShape kéo dài JApplet (

công cộng vô hiệu trong đó () (

setSize (200, 205);

công cộng vô hiệu sơn (Đồ họa g) (

Graphics2D g2 = (Graphics2D) g;

g2.rotate (Math.PI / 6);

drawChessBoard (g);

//xoay

g2.rotate (-Math.PI / 6);

g.setXORMode ( Mới Màu (200, 255, 250));

Hình dạng e = Mới Ellipse2D. Float (70, 75, 70, 50);

// vẽ một hình elip

// vẽ bàn cờ

công cộng vô hiệu drawChessBoard (Đồ họa g) (

NS kích thước = 16;

(NS y = 0; y< 8; y++) {

(NS x = 0; NS< 8; x++) {

nếu như((x + y)% 2 == 0)

g.setColor (Màu.BLUE);

g.setColor (Màu.WHITE);

g.fillRect (75 + x * size, y * size - 25, size, size);

g.setColor (Màu.BLACK);

g.drawString ( Mới Tính cách (

(char) ('8' - y)). ToString (), 66, y * size - 13);

g.drawString ( Mới Tính cách (

(char) (y + ‘a’)). toString (),

79 + y * kích thước, 8 * kích thước - 14);

Lúa gạo. 11.4. Vẽ các hình dạng khác nhau

// ví dụ # 4: outputGIF-Hình ảnh:DrawImage. java

Bưu kiện chapt11;

nhập khẩu java.awt.Graphics;

nhập khẩu java.awt.Image;

nhập khẩu javax.swing.JApplet;

công cộng lớp DrawImage kéo dài JApplet (

riêng Hình ảnh img;

công cộng vô hiệu trong đó () (

img = getImage (getCodeBase (), "joli.gif");

công cộng vô hiệu sơn (Đồ họa g) (

g.drawImage (img, 0, 0, cái này);

Khi sử dụng thuộc tính thẻ có thể chuyển các tham số từ một tài liệu HTML sang mã applet. Hãy để tài liệu HTML trông như thế này:

Tham số Applet

chiều rộng = 250 chiều cao = 300>

applet>

Sau đó để đọc và xử lý các thông số bNumbertiểu bang applet sẽ trông như thế này:

/ * ví dụ # 5: truyền tham số vào applet: ReadParam.java */

Bưu kiện chapt11;

nhập khẩu java.awt.Color;

nhập khẩu java.awt.Graphics;

nhập khẩu java.applet.Applet;

công cộng lớp ReadParam kéo dài Applet (

riêng NS bNum;

riêng boolean tiểu bang;

công cộng vô hiệu bắt đầu () ( // đọc hiểu thông số

param = getParameter ("trạng thái");

nếu như(tham số! = vô giá trị)

trạng thái = Mới Boolean (param);

param = getParameter ("bNumber");

nếu như(tham số! = vô giá trị)

bNum = Integer.parseInt (param);

} chụp lấy(NumberFormatException e) (

trạng thái = sai;

công cộng vô hiệu sơn (Đồ họa g) (

kép d = 0;

nếu như(trạng thái) d = Math.pow (bNum, 2);

khác g.drawString ("Tham số lỗi", 0, 11);

g.drawString ("Câu lệnh:" + state, 0, 28);

g.drawString ("Giá trị b:" + bNum, 0, 45);

g.drawString ("b lũy thừa 2:" + d, 0, 62);

Lúa gạo. 11,5. Truyền các tham số cho một applet

Nếu tham số không có sẵn, phương thức getParameter() trả lại vô giá trị.

Khi sử dụng các thành phần điều khiển trong các applet, thông thường sử dụng các lớp từ gói javax. lung lay trong đó thành phần trên màn hình được tạo bằng Java và phụ thuộc tối thiểu vào nền tảng và phần cứng. Các lớp thành phần như vậy là JButton, JCheckBox, JDialog, JMenu, JComboBox, JMenu, JTextField, JTextArea khác. Các thành phần thường được đặt trong một vùng chứa (lớp NSontainer), là một đối tượng ngầm của bất kỳ ứng dụng đồ họa nào. Tham chiếu rõ ràng đến vùng chứa có thể được lấy bằng phương pháp này getContentPane() .

// ví dụ # 6: applet với thành phần: MyJApplet.java

Bưu kiện chapt11;

nhập khẩu java.awt.Container;

nhập khẩu javax.swing.JApplet;

nhập khẩu javax.swing.JLabel;

công cộng lớp MyJApplet kéo dài JApplet (

riêng JLabel lbl = Mới JLabel ("Swing-applet!");

công cộng vô hiệu trong đó () (

Vùng chứa c = getContentPane ();

Lúa gạo. 11,6. Applet có nhãn

Trong chương trình này, một nhãn văn bản được đặt JLabel vào biểu mẫu trong applet. Hàm tạo lớp JLabel lấy đối tượng Dây và sử dụng giá trị của nó để tạo nhãn. Phương thức tự động được gọi khi applet được tải trong đó () thường chịu trách nhiệm khởi tạo các trường và đặt thành phần trên biểu mẫu. Đối với điều này, phương thức được gọi là cộng () lớp Thùng đựng hàng, đưa thành phần vào một vùng chứa. Phương pháp cộng () không được gọi ngay lập tức, như có thể được thực hiện trong thư viện AWT. Túi nhựa Lung lay yêu cầu tất cả các thành phần được thêm vào "ngăn nội dung" của biểu mẫu Khung nội dung, vì vậy trước tiên bạn cần gọi phương thức getContentPane () lớp JAppletđể tạo tham chiếu đến một đối tượng như một phần của quy trình cộng ().

// ví dụ # 7: vòng đời applet:DemoLC. java

Bưu kiện chapt11;

nhập khẩu java.awt.Color;

nhập khẩu java.awt.Graphics;

nhập khẩu javax.swing.JApplet;

công cộng lớp DemoLC kéo dài JApplet (

riêng NS starX =

{ 112, 87, 6, 71, 47, 112, 176, 151, 215, 136 };

riêng NS saoY =

{ 0, 76, 76, 124, 200, 152, 200, 124, 76, 76 };

riêng NS tôi;

riêng Màu sắc c;

công cộng vô hiệu trong đó () (

c = Mới Màu (0, 0, 255);

setBackground (Màu.LIGHT_GRAY);

công cộng vô hiệu bắt đầu () (

NS j = i * 25;

nếu như(NS< 255)

c = Mới Màu (j, j, 255 - j);

khác i = 1;

công cộng vô hiệu sơn (Đồ họa g) (

g.fillPolygon (starX, starY, starX.length);

g.setColor (Màu.BLACK);

g.drawPolygon (starX, starY, starX.length);

công cộng vô hiệu ngừng lại () (

Lúa gạo. 11.7. Màu đa giác và vòng đời của applet

Khi làm việc với các phông chữ, bạn có thể tìm ra những phông chữ nào có sẵn trên máy tính của mình và sử dụng chúng. Để có được thông tin này, phương pháp được áp dụng getAvailableFontFamilyNames () lớp Đồ họa... Phương thức trả về một mảng các chuỗi chứa tên của tất cả các họ phông chữ có sẵn được đăng ký trên máy tính này.

// ví dụ # 8: truy cập vào phông chữ hệ điều hành: Fonts.java

Bưu kiện chapt11;

nhập khẩu java.awt.Font;

nhập khẩu java.awt.Graphics;

nhập khẩu java.awt.GraphicsEnosystem;

nhập khẩu javax.swing.JApplet;

công cộng lớp Phông chữ kéo dài JApplet (

riêng Phông chữ chuỗi;

công cộng vô hiệu trong đó () (

Đồ họa

GraphicsEnosystem.getLocalGraphicsEnosystem ();

font = ge.getAvailableFontFamilyNames ();

setSize (700, 400);

công cộng vô hiệu sơn (Đồ họa g) (

NS xSize = getWidth () / 170;

(NS i = 0; tôi< fonts.length; i++) {

g.setFont ( Mới Nét chữ (

phông chữ [i], Font.PLAIN, 12)); // tên, kiểu, kích thước

g.drawString (phông chữ [i],

170 * (i% xSize), 13 * (i / xSize + 1));

Lúa gạo. 11,8. Hiển thị danh sách các phông chữ

15 câu trả lời

Tôi nghĩ rằng các ứng dụng Java đã bị lu mờ bởi Flash và ActionScript (do vô tình chơi chữ), điều này dễ sử dụng hơn nhiều đối với những gì các ứng dụng Java đang được sử dụng vào thời điểm đó (hình ảnh động + ứng dụng trạng thái).

Thành công của Flash trong lĩnh vực này, đến lượt nó, bắt nguồn từ kích thước tệp nhỏ hơn nhiều, cũng như hưởng lợi từ quyết định của Sun chống lại Microsoft, dẫn đến việc Microsoft loại bỏ MSJVM khỏi Internet Explorer trong sự sụp đổ của Netscape và sự thống trị nặng nề của IE.

1) AWT được tạo ra cho các giao diện người dùng tồi tệ. Swing đã được cải thiện, nhưng đã quá muộn vì ... 2) Microsoft đã bỏ hỗ trợ Java trong trình duyệt (MSJVM độc quyền của hãng) và trước đó nó sẽ chỉ hỗ trợ phiên bản mới nhất được phát hành gần như tương thích với JDK 1.1.
3) Vì vậy, ngày nay bạn không thể chắc chắn rằng một applet sẽ hoạt động trên hầu hết các máy không phải là nhà phát triển, không giống như flash.

Điều tương tự cũng có thể nói đối với ActiveX.

Đối với những gì nó đáng giá, Mặt trời đang đổ tiền và tài nguyên vào các applet một lần nữa. Họ đã thực hiện một số cải tiến đáng kể trong JDK 1.6.10 để giảm thiểu nhiều applet "lắt léo" đã bị lộ ra. Ví dụ: với bản cập nhật này, bạn có thể hiển thị hình ảnh / hoạt ảnh khởi động tùy chỉnh của riêng mình trong khi applet đang tải và plugin được thêm vào chế độ ăn chính để cải thiện hiệu suất.

Họ cũng đưa ra sáng kiến ​​cạnh tranh trực tiếp với Flash và Silverlight - JavaFX.

Cho dù thị trường có phản ứng với tất cả những điều này hay không thì vẫn còn phải xem, nhưng đây chắc chắn là một động thái thú vị từ phía Mặt trời với sự thống trị của Flash trên thị trường.

Tôi giả định điều này vì java là "thực", tức là ngôn ngữ mục đích chung... Để tạo một applet, bạn cần viết mã và không có phím tắt nào.

Bây giờ có một ổ đĩa flash và những thứ tương tự, bạn có thể khá nhiều chỉ việc vẽ và tạo ra các hoạt ảnh thú vị cho trang web của mình. Đây là rào cản gia nhập thấp hơn nhiều - bạn không cần phải biết cách lập trình để hoạt động của hoạt ảnh flash. Do đó, flash được phân phối và các applet java hầu như không được sử dụng.

Tôi nghĩ các applet là thiệt hại thế chấp trong cuộc chiến giữa Microsoft và Sun.

Đầu tiên, JVM tải rất chậm và yêu cầu quá nhiều bộ nhớ. Sau đó, khi tăng khả năng tính toánđã làm cho JVM trở nên khả thi, Sun đã chơi hết mình khi cố gắng kiểm soát tất cả những thứ Java:

Trong một vụ kiện chống độc quyền riêng tư khác do Sun đệ trình vào tháng 3, Sun đã yêu cầu lệnh ban đầu yêu cầu Microsoft kích hoạt tính năng ảo hiện tại Máy Java(JVM) đến phòng điều hành Hệ thống Windows XP. Microsoft cho biết quyết định bao gồm JVM trong tuần này là kết quả trực tiếp của sự xáo trộn pháp lý mới nhất với Sun, nhưng Microsoft có kế hoạch giải tán Hỗ trợ Java trên Windows sau ngày 1 tháng 1 năm 2004. Khóa học về Microsoft Reverses, sẽ kích hoạt Java VM trên Windows XP - Bây giờ

Họ mất nhiều thời gian để tải xuống và vào trình duyệt, và sau đó đối với nhiều người, chúng không hoạt động. Cuối cùng khi chúng được tải, các giao diện rất xấu và khó xử lý. Tôi nghĩ tệ Kinh nghiệm người dùng là một bước tiến lớn đối với việc ngừng sử dụng các applet.

Vì vậy, để trả lời câu hỏi ban đầu, tôi có một câu hỏi của riêng mình - bạn hỏi "Tại sao các trang web không sử dụng java applet nữa" và câu trả lời của tôi là "tại sao mọi người lại muốn?"

Tôi thấy rất nhiều người trong số họ ở các cơ sở y tế (được tổ chức bởi các khoa hoặc khoa), nhưng bạn nói đúng rằng chúng không phổ biến lắm.

Tuy nhiên, hãy nhớ rằng những hứa hẹn lớn của Java đã đạt được. Chúng tôi có Flash, ứng dụng Java, Silverlight và các khung JavaScript ngày càng cải tiến.

Bây giờ nếu tôi đưa ra ý kiến ​​cá nhân - tôi nghĩ các ứng dụng Java là không phù hợp. Chúng có xu hướng trông xấu xí, thời gian chạy Java làm cho sự hiện diện của nó trong hệ điều hành trở nên quá nổi tiếng (về hình ảnh thời gian chạy, cập nhật và trình cài đặt xấu xí). Flash phù hợp hơn nhiều với môi trường đa phương tiện và việc triển khai minh bạch (và phổ biến) của nó.

Tôi tin rằng các vấn đề tương thích là một vấn đề lớn. Đặc biệt là với IE và Microsoft Java VM, vốn không đạt tiêu chuẩn.

Ngay cả với Sun JVM, bạn có thể gặp vấn đề. Tôi đã rất vui khi có hai applet của bên thứ ba yêu cầu các phiên bản khác nhau Java gây ra tất cả các loại vấn đề. Sun đã cố gắng giải quyết vấn đề này bằng cách thay thế các applet bằng Java Web Start, chứa một liên kết trong trình duyệt để khởi chạy ứng dụng trong cửa sổ của chính nó chứ không phải bên trong trình duyệt. (Về lý thuyết, với JWS, bạn có thể có các ứng dụng khác nhau sử dụng khác nhau máy ảo nhưng họ không bao giờ làm việc cho tôi như họ nên làm.)

Quảng cáo với sử dụng JavaScript cũng cho phép nhà phát triển các trang web phong phú hơn nhiều, rất nhiều thứ trước đây bạn chỉ có thể làm trong Applet giờ có thể được thực hiện đơn giản với AJAX.

Đầu tiên, chúng không biến mất. Bạn vẫn có thể tìm thấy nhiều applet trên Internet, nhiều người sử dụng chúng, đặc biệt là để trình diễn các thuật toán, v.v.
Ưu điểm: Có thể sử dụng các thư viện hiện có (toán học, vật lý, sắp xếp, đồ thị, v.v.) và nó nhanh hơn Flash.
Bất lợi: Có thể rủi ro khi nhắm mục tiêu vào một JVM gần đây (mặc dù Sun đã Làm tốt lắm trên cập nhật tự động Có vẻ như rất nhiều người đã sử dụng Java 1.6), thời gian tải hơi chậm (mặc dù có rất nhiều tiến bộ về điều này).

Bạn cũng có thể tìm thấy nhiều applet trò chơi như Bookworm, với lợi thế bổ sung có thể thực hiện một số công việc đã hoàn thành để khiến chúng chạy trên điện thoại di động ...

Thứ hai, tôi có thể dự đoán sự quan tâm đến JavaFX. Applet trên steroid có thể phá vỡ truyền thuyết "applet là xấu xí" ... :-)

Cuối cùng, một thư viện như Xử lý giúp dễ dàng tạo các ứng dụng đồ họa chuyên sâu và bạn có thể tìm thấy nhiều ứng dụng trong số đó trên web chẳng hạn. trên OpenProcessing, nơi điều tồi tệ nhất (mới học lập trình) gần với thứ tốt nhất!

Tự hỏi mức độ phổ biến của JVM? Trong trường hợp của Flash, IE5 đã cài đặt sẵn nó, tạo cho nó một lượng lớn người dùng tự động. Nhưng nếu JVM không được bao gồm trong cài đặt hệ điều hành, người dùng sẽ không có nó. Là một nhà phát triển, tôi tin rằng bạn đang nhắm mục tiêu cơ sở cài đặt lớn nhất, có nghĩa là chọn Flash thay vì Java.

Có các ứng dụng Java ở đây và ở đó; chắc chắn không phải ở khắp nơi.