# Fantom

> general purpose object-oriented programming language

**Wikidata**: [Q2699404](https://www.wikidata.org/wiki/Q2699404)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Fantom_(programming_language))  
**Source**: https://4ort.xyz/entity/fantom

## Summary
Fantom is a general-purpose, object-oriented programming language that supports multiple paradigms and runs on the Java Virtual Machine. It was created in 2005 and is designed for building scalable, portable applications across different platforms. Fantom combines features of both static and dynamic typing, making it flexible for various programming needs.

## Key Facts
- Inception: 2005
- License: Academic Free License
- Website: http://www.fantom.org (English)
- Typing discipline: Supports both static typing and dynamic typing
- Instance of: Programming language, object-based language, multi-paradigm programming language, JVM language
- Wikipedia title: Fantom (programming language)
- Wikipedia languages: cs, en, fa, fi, it, ja, pt, ru, uk
- Logo: Available at https://commons.wikimedia.org/wiki/Special:FilePath/Fantom-logo.png
- Freebase ID: /m/04jfk1r
- Microsoft Academic ID (discontinued): 2780036518

## FAQs
### Q: What type of programming language is Fantom?
A: Fantom is a general-purpose, object-oriented programming language that supports multiple paradigms including object-oriented and multi-paradigm programming. It runs on the Java Virtual Machine and combines features of both static and dynamic typing.

### Q: When was Fantom created and what license does it use?
A: Fantom was created in 2005 and is distributed under the Academic Free License, making it freely available for academic and commercial use.

### Q: What platforms can Fantom run on?
A: Fantom runs on the Java Virtual Machine (JVM), which means it can run on any platform that supports Java, including Windows, macOS, Linux, and other operating systems with JVM support.

## Why It Matters
Fantom matters because it provides developers with a versatile, cross-platform programming solution that bridges the gap between static and dynamic typing systems. Its JVM compatibility ensures broad deployment possibilities while maintaining performance and portability. The language's multi-paradigm approach allows developers to choose the most appropriate programming style for their specific needs, whether that's object-oriented design, functional programming, or other paradigms. Fantom's Academic Free License makes it accessible for both educational purposes and commercial development, contributing to its adoption in various software projects. The language addresses the need for a modern, flexible programming tool that can handle complex application development while maintaining code clarity and maintainability.

## Notable For
- JVM compatibility allowing cross-platform deployment
- Hybrid typing system supporting both static and dynamic typing
- Academic Free License enabling broad adoption
- Multi-paradigm support combining object-oriented and other programming approaches
- Active community with documentation in nine different languages

## Body
### Language Design and Features
Fantom was designed as a general-purpose programming language with a focus on simplicity and power. The language supports object-oriented programming as its core paradigm while also accommodating other programming styles through its multi-paradigm capabilities. This flexibility allows developers to choose the most appropriate approach for their specific project requirements.

### Typing System
One of Fantom's distinctive features is its hybrid typing system that supports both static and dynamic typing. This dual approach provides developers with the benefits of compile-time type checking when needed, while also allowing for the flexibility of dynamic typing in situations where it's advantageous. This makes Fantom particularly suitable for projects that require both safety and flexibility.

### Platform Support
As a JVM language, Fantom compiles to Java bytecode, enabling it to run on any platform that supports the Java Virtual Machine. This includes major operating systems like Windows, macOS, and Linux, as well as various embedded systems and cloud platforms that support JVM deployment. The language's JVM compatibility ensures that applications written in Fantom can leverage the extensive Java ecosystem and libraries.

### Documentation and Community
Fantom maintains comprehensive documentation available in nine different languages: Czech, English, Persian, Finnish, Italian, Japanese, Portuguese, Russian, and Ukrainian. This multilingual support demonstrates the language's international adoption and the community's commitment to accessibility. The language's website serves as the central hub for documentation, downloads, and community resources.

### File Formats and Development
Fantom source code files use a specific readable and writable file format, with detailed documentation available on compilation units and language structure. The language includes support for MacPorts, making it easily installable on macOS systems through the package manager. Development tools and resources are available through the official website, supporting the language's continued development and maintenance.

## References

1. Freebase Data Dumps. 2013
2. [Source](https://fantom.org/doc/docLang/CompilationUnits)