SlideShare a Scribd company logo
Introduce GObject
Introspection
HanIRC #gnome
gana코코아
Typical GObject Application
Development Layer
GLib/GObject
ATK Pango
GTK+
Clutter Gstreamer
Ext Libraries
PyGTK Gtk#
java-
gnome
Gtk2-
Perl
Ruby-
Gnome2
C
Apps
Python
Apps
Mono
Apps
Java
Apps
Perl
Apps
Ruby
Apps
If Library apis are changed...
●Library bump version
●PyGtk bump version
●gtk-sharp bump version
●java-gnome bump version
●Gtk2-Perl bump version
●Ruby-Gnome2 bump version
●듣보잡 language binding bump version
Introduce gobject introspection
GI Enabled Development Layer
GLib/GObject
ATK Pango
GTK+
Clutter Gstreamer
Ext Libraries
libffi/libgirepository
C
Apps
Python
Apps
Mono
Apps
Java
Apps
Perl
Apps
Ruby
Apps
Typelib
Typelib
Typelib
Typelib
TypelibTypelib
Typelib
Typelib
If Library apis are changed...
●Library bump version (with TypeLib)
●don't need to change each language binding.
Overview of GI's Architecture
●http://live.gnome.org/GObjectIntrospection/Architecture
●Annotations in library source codes
ogtk_window_resize()
 http://goo.gl/8i7dx
ogtk_window_get_size()
 http://goo.gl/MOr8a
The Difference between GI and CLI
●TypeLib are not bytecodes
but metadata.
●Each Language Host are
just using each C libraries
with libgirepository.
●Each Libraries are CIL
bytecodes.
●Each Language Host must
build/run on CLR.
Example 1 for python binding
# using pygtk
import gtk
w = gtk.Window()
w.show_all()
gtk.main()
# using gir
import gi
gi.require_version("Gtk", "2.0")
from gi.repository import Gtk
w = Gtk.Window()
w.show_all()
Gtk.main()
Example 2 for js binding (gjs, seed)
imports.gi.versions.Gtk = '3.0'
const Gtk = imports.gi.Gtk;
Gtk.init(null, 0)
w = new Gtk.Window({ type: Gtk.WindowType.TOPLEVEL })
w.show_all()
Gtk.main()
Example 3
●WebPreview
ojs version
 http://goo.gl/W4wt3
opython version
 http://goo.gl/lHspm
References
●http://live.gnome.org/GObjectIntrospection and subpages
●http://git.gnome.org/browse/

More Related Content

PDF
PostgreSQL Replication
PDF
Git tutorial for CS320 Students
PDF
自分戦略
KEY
PyCon JP 2011 Lightning Talk No.10
PPTX
Runtime & Concurrency in go slides
PPTX
Advantages of Python Learning | Why Python
KEY
LLPlanets Lightning Talk Presentation No.8
ODP
Besut Kode - Workshop 1
PostgreSQL Replication
Git tutorial for CS320 Students
自分戦略
PyCon JP 2011 Lightning Talk No.10
Runtime & Concurrency in go slides
Advantages of Python Learning | Why Python
LLPlanets Lightning Talk Presentation No.8
Besut Kode - Workshop 1

What's hot (20)

PDF
What is coala?
PPT
Rockit: A Parser Generator for Ruby
PDF
Git push to build, test and scan your containers
PDF
Effortless network response logging on Android
PDF
Marconi: Queuing and Notification service for OpenStack
PDF
Introduction to Renjin, the alternative engine for R
PPTX
Groovy
PDF
Raspberry Pi for Developers and Makers
PDF
Git tips by symbols
PPT
GCC compiler
PPTX
Golang presentaion-2018-07-26
PDF
Plasmaquick Workshop - FISL 13
PDF
Pyconsg2014 pyston
PDF
RaspberryPiで作るガイガーカウンター
PPTX
Go Programming language, golang
PDF
Usage of GDB
PPTX
Pda numerical 2
ODP
How to package github softwares
PPTX
Golang (Go Programming Language)
PDF
Go Programming Language by Google
What is coala?
Rockit: A Parser Generator for Ruby
Git push to build, test and scan your containers
Effortless network response logging on Android
Marconi: Queuing and Notification service for OpenStack
Introduction to Renjin, the alternative engine for R
Groovy
Raspberry Pi for Developers and Makers
Git tips by symbols
GCC compiler
Golang presentaion-2018-07-26
Plasmaquick Workshop - FISL 13
Pyconsg2014 pyston
RaspberryPiで作るガイガーカウンター
Go Programming language, golang
Usage of GDB
Pda numerical 2
How to package github softwares
Golang (Go Programming Language)
Go Programming Language by Google
Ad

Viewers also liked (8)

PPT
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
ODP
Gnome census
PDF
Multimedia in WebKitGTK+ (FOSDEM 2010)
PDF
SqueakGTK
PDF
نگاهی به Gtk3
PDF
LCA2013 : Implementing threaded accelerated compositing in WebKitGtk+
PDF
Gtk development-using-glade-3
PPT
Hibernate architecture
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Gnome census
Multimedia in WebKitGTK+ (FOSDEM 2010)
SqueakGTK
نگاهی به Gtk3
LCA2013 : Implementing threaded accelerated compositing in WebKitGtk+
Gtk development-using-glade-3
Hibernate architecture
Ad

Similar to Introduce gobject introspection (20)

PDF
Javascript, the GNOME way (JSConf EU 2011)
PDF
An introduction to Gnome An introdu.pptx
PDF
Basics of gtk_ilugc
PDF
Python and GObject Introspection
PDF
Javascript in linux desktop (ICOS ver.)
PDF
Real World Java 9 (QCon London)
PPTX
GTK with C in real time example for beginners
PDF
guadec-2015-developer-switch-dreams
PDF
Meiga Guadec 2009 English
PDF
Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...
ODP
Gnome Architecture
KEY
Introduction to EclipseRT (JAX 2010)
PDF
WebKitGtk+ Project
PDF
The Newest JavaScript Technologies in GNOME
PDF
Intuitive CLIs for gRPC APIs
ODP
G T K+ 101
PDF
RESTful Services and Distributed OSGi - 04/2009
PPTX
Go & multi platform GUI Trials and Errors
PDF
A Recovering Java Developer Learns to Go
PDF
Happy Go Programming Part 1
Javascript, the GNOME way (JSConf EU 2011)
An introduction to Gnome An introdu.pptx
Basics of gtk_ilugc
Python and GObject Introspection
Javascript in linux desktop (ICOS ver.)
Real World Java 9 (QCon London)
GTK with C in real time example for beginners
guadec-2015-developer-switch-dreams
Meiga Guadec 2009 English
Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...
Gnome Architecture
Introduction to EclipseRT (JAX 2010)
WebKitGtk+ Project
The Newest JavaScript Technologies in GNOME
Intuitive CLIs for gRPC APIs
G T K+ 101
RESTful Services and Distributed OSGi - 04/2009
Go & multi platform GUI Trials and Errors
A Recovering Java Developer Learns to Go
Happy Go Programming Part 1

More from Young-Ho Cha (12)

PDF
마세라티의 비밀
PDF
More than nexus, better than nexus.
PDF
7급 공무원도 쉽게 따라하는 쉘 스크립트
PDF
Cairo clock for android wear
PDF
GITHUB와 함께 Social하게 코딩하기
PDF
코드 리뷰 시스템 소개
PDF
웹표준과 자동화의 약속된 승리
PDF
7급 공무원도 쉽게 따라하는 프로파일링 도구 만들기
PDF
자막을 뿌리려면 해야 할 여러가지 삽질모음
PDF
Browser history and overview
PPTX
Introduce native client
ODP
페챠쿠챠
마세라티의 비밀
More than nexus, better than nexus.
7급 공무원도 쉽게 따라하는 쉘 스크립트
Cairo clock for android wear
GITHUB와 함께 Social하게 코딩하기
코드 리뷰 시스템 소개
웹표준과 자동화의 약속된 승리
7급 공무원도 쉽게 따라하는 프로파일링 도구 만들기
자막을 뿌리려면 해야 할 여러가지 삽질모음
Browser history and overview
Introduce native client
페챠쿠챠

Recently uploaded (20)

PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
System and Network Administration Chapter 2
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Introduction to Artificial Intelligence
PDF
top salesforce developer skills in 2025.pdf
PPTX
L1 - Introduction to python Backend.pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Digital Strategies for Manufacturing Companies
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Nekopoi APK 2025 free lastest update
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
ai tools demonstartion for schools and inter college
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
System and Network Administration Chapter 2
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Which alternative to Crystal Reports is best for small or large businesses.pdf
Introduction to Artificial Intelligence
top salesforce developer skills in 2025.pdf
L1 - Introduction to python Backend.pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Digital Strategies for Manufacturing Companies
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Nekopoi APK 2025 free lastest update
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Navsoft: AI-Powered Business Solutions & Custom Software Development
Design an Analysis of Algorithms II-SECS-1021-03
ai tools demonstartion for schools and inter college
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Upgrade and Innovation Strategies for SAP ERP Customers
How to Choose the Right IT Partner for Your Business in Malaysia
Wondershare Filmora 15 Crack With Activation Key [2025

Introduce gobject introspection

  • 2. Typical GObject Application Development Layer GLib/GObject ATK Pango GTK+ Clutter Gstreamer Ext Libraries PyGTK Gtk# java- gnome Gtk2- Perl Ruby- Gnome2 C Apps Python Apps Mono Apps Java Apps Perl Apps Ruby Apps
  • 3. If Library apis are changed... ●Library bump version ●PyGtk bump version ●gtk-sharp bump version ●java-gnome bump version ●Gtk2-Perl bump version ●Ruby-Gnome2 bump version ●듣보잡 language binding bump version
  • 5. GI Enabled Development Layer GLib/GObject ATK Pango GTK+ Clutter Gstreamer Ext Libraries libffi/libgirepository C Apps Python Apps Mono Apps Java Apps Perl Apps Ruby Apps Typelib Typelib Typelib Typelib TypelibTypelib Typelib Typelib
  • 6. If Library apis are changed... ●Library bump version (with TypeLib) ●don't need to change each language binding.
  • 7. Overview of GI's Architecture ●http://live.gnome.org/GObjectIntrospection/Architecture ●Annotations in library source codes ogtk_window_resize()  http://goo.gl/8i7dx ogtk_window_get_size()  http://goo.gl/MOr8a
  • 8. The Difference between GI and CLI ●TypeLib are not bytecodes but metadata. ●Each Language Host are just using each C libraries with libgirepository. ●Each Libraries are CIL bytecodes. ●Each Language Host must build/run on CLR.
  • 9. Example 1 for python binding # using pygtk import gtk w = gtk.Window() w.show_all() gtk.main() # using gir import gi gi.require_version("Gtk", "2.0") from gi.repository import Gtk w = Gtk.Window() w.show_all() Gtk.main()
  • 10. Example 2 for js binding (gjs, seed) imports.gi.versions.Gtk = '3.0' const Gtk = imports.gi.Gtk; Gtk.init(null, 0) w = new Gtk.Window({ type: Gtk.WindowType.TOPLEVEL }) w.show_all() Gtk.main()
  • 11. Example 3 ●WebPreview ojs version  http://goo.gl/W4wt3 opython version  http://goo.gl/lHspm