Joomla is designed in such a way that you never have to touch the core files. Aiding in this, Joomla provides five different types of extensions giving you a wide range of control over how Joomla loads and executes. It's possible to write all five types of extensions for both the site and administrator applications of JoomlaComponents
One, exactly one and only one component loads per each page load in Joomla Components can be very complex and they're designed to manage records in the database primarily. A good example of a component that you're probably familiar with is the content component. The content component manages articles in the database and then displays them in the front end.Templates
Templates control the overall look and feel of your Joomla site. You can only assign one template per page. However, you can have different templates for different pages.Modules
Modules typically make up the sidebars and the headers and the footers of your web site. Your template will provide multiple positions for your modules and your modules will have menus and login boxes and pieces of content that you wanted to display alongside your component.Plugins
Plug-ins typically run in the background of Joomla They don't always necessarily have a visual element to them, however you can use them to do things like search and replace text on the output of your Joomla site. They can also do things like help you log into your Joomla site and they typically just stay in the background and wait for a certain event to occur and then just react to that event.Language Packs
Notice the You are here message that appears next to Home. This is a user interface element that Joomla can translate. Notice now that the You are here message has been translated into French. However, the Home item is still in English. This is because Joomla only translates the user interface elements and does not translate your content.
Let's take a look at this language pack.
When you write code for Joomla you can write it as one of these five extension types without ever touching the code that comes with Joomla