Confusion on resources: internal vs. external resources


I am trying to understand how MicroEJ resources work.

From an Application POV, there are Applications Resources: Application Resources — MicroEJ Documentation
How Applications Resources are loaded is explained in the Classpath documentation: MicroEJ Classpath — MicroEJ Documentation

From a Platform POV, there is External Resources: External Resources Loader — MicroEJ Documentation
But it is not clear to me when the External Resources Loader is used.
For example, what happens for NLS files? Are they internal or external resources?
The doc says:

The available list of internal resources to embed must be specified in the MicroEJ Application launcher (MicroEJ launch). Under the “Resources” tab, select all internal resources to embed in the final binary file.

I don’t have resources configured in my launcher, does that mean my translations are External Resources?

Yet, I’m confused by the sentence on Internal Resources:

The SOAR step loads the resource and copies it into the same C library as the MicroEJ Application.

I checked the .map of my firmware, the NLS files are under _java_rodata_resource_java_PCLASSPATH_FILE.nls.
So my understanding is that the NLS files are bundled in the microejapp.o. Does that mean they are Internal Resources?

For images, there is a mention about imagesext.list files to manage images as external resources: Image Loader — MicroEJ Documentation
Does that mean that, if I don’t use this file I am using Internal Resources?

Can you tell me what I am missing and clarify to me the distinction between resources?

Hello @medhi.j,

Internal resources are the resources that are bundled in the microejapp.o file, the internal resources are linked into the CPU address space range. All resources declared in .list files in your application will be bundled as internal resources. NLS files are declared in .list files so they are internal resources.

External resources are resources that are not taken into consideration by MicroEJ. It is the responsibility of the BSP project to manage this kind of resource and they are often programmed outside the CPU address space range (storage media like SD card, serial NOR flash, EEPROM, etc.).

Hope this helps,

1 Like

Hi alexis,
Ok I understand, thanks for the clarification.

Regarding the symbol _java_rodta_resource_java_PCLASSPATH_FILE.nls, I couldn’t find information about it in your documentation, where can I find information about the symbols about my application (other than looking at the .map)?