Moreover, the programming language should provide object-oriented features, meaning support for inheritance, encapsulation, and polymorphism, not procedural programming. This should be royalty-free. This means that the tool creates a file that must be interpreted at runtime into machine language for the processor. This provides an easier development environment because the code does not go directly to the processor as a native executable, but performance can suffer. No matter what deployment mechanism the tool uses, application performance varies greatly from tool to tool.
Performance is critical because it's how the user perceives the application.
Performance problems are difficult to solve with faster processors because it's inevitable that lower-powered clients will run your application. Doubling the number of objects in an application should not greatly affect the performance of an application. Tools should access databases quickly, moving the data efficiently from the physical database over the network to local memory. Although much of this is dependent on the capabilities of the database server, application performance should not change when the size of the database increases. Today, the key to quick development is the ability to build as much of an application as possible from prebuilt component parts.