एप्लेट जेएआर जेवीएम द्वारा डाउनलोड किया गया है। सभी एप्लेट एक यूआरएल क्लासलोडर (या एक सबक्लास - sun.applet.AppletClassLoader
सूर्य जेवीएम में) के उदाहरण से जुड़े होते हैं जो एक एप्लेट द्वारा आवश्यक सभी वर्गों और संसाधनों को लोड करने के लिए ज़िम्मेदार है।
स्पष्ट रूप से, क्लास फाइलों और संसाधनों को लोड करने के लिए आवश्यक अधिकांश बुनियादी ढांचे जावा रनटाइम में उपलब्ध हैं, और इसका पुन: उपयोग करने से जावा प्लग-इन को अधिकांश भाग के लिए ब्राउज़र आंतरिकों तक पहुंचने की चिंता करने की अनुमति नहीं मिलती है।
मैं ओपनजेडीके कोडबेस के मुख्य हिस्सों को पुन: पेश करूंगा, जो इस गतिविधि को निष्पादित करता है। आप sun.applet.AppletPanel
की runLoader()
विधि में रोचक सामग्री मिल जाएगा:
/**
* Load the applet into memory.
* Runs in a seperate (and interruptible) thread from the rest of the
* applet event processing so that it can be gracefully interrupted from
* things like HotJava.
*/
private void runLoader() {
if (status != APPLET_DISPOSE) {
showAppletStatus("notdisposed");
return;
}
dispatchAppletEvent(APPLET_LOADING, null);
// REMIND -- might be cool to visually indicate loading here --
// maybe do animation?
status = APPLET_LOAD;
// Create a class loader
loader = getClassLoader(getCodeBase(), getClassLoaderCacheKey());
// Load the archives if present.
// REMIND - this probably should be done in a separate thread,
// or at least the additional archives (epll).
String code = getCode();
// setup applet AppContext
// this must be called before loadJarFiles
setupAppletAppContext();
try {
loadJarFiles(loader); // <-- this is what loads the JAR files
applet = createApplet(loader);
...
इसके अलावा, संसाधनों को लाने के लिए जावा सुरक्षा मॉडल के लिए मायने रखती है को मुश्किल होगा ब्राउज़र रही। यह इस तथ्य के कारण है कि एप्लेट्स अपने AccessControlContext
का उपयोग करते हैं जो उनके लिए सेटअप किया गया है। इस संदर्भ में अनुमतियों का डिफ़ॉल्ट सेट होता है जो एप्लेट प्रारंभ होने पर इसमें जोड़े जाते हैं; कोड में कोडबेस को होस्ट करने वाले सर्वर से कनेक्ट करने के लिए SocketPermission
शामिल है, या FilePermission
कोडबेस युक्त फाइल सिस्टम को पढ़ने की अनुमति देता है। यदि ब्राउजर द्वारा संसाधन लोडिंग किया जाना था, तो प्लग-इन को कैसे कार्यान्वित किया जाता है, इस पर निर्भर करता है कि चेक को आसानी से नहीं किया जा सकता है जिससे सुरक्षा मॉडल के संभावित ब्रेक-डाउन हो जाते हैं।
आप अन्य उत्तर में बताए गए अनुसार, नेटवर्क यातायात को देखकर JVM के संसाधन लोडिंग व्यवहार की पुष्टि कर सकते हैं। मैं फिडलर से पुष्टिकरण के रूप में स्क्रीनशॉट पोस्ट करूंगा। प्रक्रिया कॉलम इंगित करता है कि कौन सी ओएस प्रक्रिया अनुरोध भेजने के लिए ज़िम्मेदार है (इस मामले में यह जावा एप्लिकेशन लॉन्चर java.exe
) होता है। छवि की स्पष्ट खराब गुणवत्ता के लिए माफी - आपको छवि का आकार बदलने या इसे एक नई विंडो में खोलने की आवश्यकता होगी।
स्रोत
2011-06-25 05:17:06
सफारी के तहत कम से कम, एप्लेट एक 'onload' घटना ट्रिगर नहीं है, इसलिए मैं कहना है कि HTTP अनुरोध JVM द्वारा किया जाता है परीक्षा की जाएगी। – zneak