The Java 2 Class File Format

The class file contains a lot more information than its cousin, the executable file. Of course, it still contains the same type of information: program requirements, an identifier indicating that this is a program and executable code (bytecode, in this case). However, it also contains some very rich information about the original source code. The … Read more

The Java Development Life Cycle

Moving back to the world of Java, we see that it is a high-level programming language and that bytecode is the low-level machine language of the JVM. Java is an object-oriented language; that is, it deals primarily with objects and their interrelationships. Objects are best thought of in this context as a collection of data … Read more

Class Files in Java 2

The Traditional Development Life Cycle Java is a compiled language. That is, source code is written in a high-level language and then converted through a process of compilation to a machine-level language, the Java bytecode, which then runs on the Java Virtual Machine (JVM). Before we look more closely at Java bytecode. Program files are … Read more

The Java Virtual Machine

Understanding how the various components of the Java Virtual Machine (JVM) cooperate to provide a secure execution environment will enable you to understand how to administer your own security policy using the new features of Java 2 and to know when you should consider implementing your own extensions to provide a more tailored security policy. … Read more

Security Management with Java 2

In this article we show you how to apply the security features of Java 2 to applets and applications running on your system. Applying a Security Manager to Applets and Applications The security manager is invoked by all the Java system code to perform access control checks based on the security policy currently in effect. … Read more

Kernel Modules Versus Applications

Before we go further, it’s worth underlining the various differences between a kernel module and an application. Whereas an application performs a single task from beginning to end, a module registers itself in order to serve future requests, and its “main” function terminates immediately. In other words, the task of the function init_module (the module’s entry … Read more

Version Numbering & License Terms

Version Numbering Before digging into programming, we’d like to comment on the version numbering scheme used in Linux and which versions are covered. First of all, note that every software package used in a Linux system has its own release number, and there are often interdependencies across them: you need a particular version of one … Read more

Security Issues

Security is an increasingly important concern in modern times. We will discuss security-related issues as they come up. There are a few general concepts, however, that are worth mentioning now. Security has two faces, which can be called deliberate and incidental. One security problem is the damage a user can cause through the misuse of … Read more

Classes of Devices and Modules

The Unix way of looking at devices distinguishes between three device types. Each module usually implements one of these types, and thus is classifiable as a char module, a block module, or a network module. This division of modules into different types, or classes, is not a rigid one; the programmer can choose to build … Read more

Splitting the Kernel

In a Unix system, several concurrent processes attend to different tasks. Each process asks for system resources, be it computing power, memory, network connectivity, or some other resource. The kernel is the big chunk of executable code in charge of handling all such requests. Though the distinction between the different kernel tasks isn’t always clearly … Read more