You need to exercise caution when using third-party APIs, ECMs or preprocessors. If their use results in inserting OS-specific components then the generated .class files might not be portable. Check the documentation of the third-party supplier for any restrictions. Call conventions might also be platform specific, such as WinAPI.