مرجع مقالات طراحی اپلیکیشن

مرجع تخصصی انتشار مقالات طراحی اپلیکیشن

مرجع مقالات طراحی اپلیکیشن

مرجع تخصصی انتشار مقالات طراحی اپلیکیشن

تاریخچه ی جاوا


تاریخچه ی جاوا

گویش نرم افزار نویسی جاوا یک گویش نرم‌افزار نویسی میباشد که به وسیله جیمز گاسلینگ از Sun Microsystems (Sun) در سال طراحی اپلیکیشن در مشهد  1991 ساخت شد.

شعار و مقصود جاوا این میباشد که یک نرم افزار را یک توشه بنویسد و آن‌گاه این نرم‌افزار را بر روی تعدادی سیستم دلیل انجام نماید.

اولی ورژن همگانی جاوا (جاوا 1.0) در سال 1995 منتشر شد.

Sun Microsystems بوسیله کمپانی Oracle در سال 2010 خریداری شد.

اوراکل اینک مدیر جاوا را در چنگ داراست.

در سال 2006 سان استارت به در دسترس قرار دادن جاوا پایین جواز همگانی همگانی گنو (GPL) کرد.

اکنون اوراکل این پروژه را با اسم OpenJDK ادامه می‌دهد.


با سپری شد فرصت ورژن های توسعه یافته جدیدی از جاوا منتشر گردیده است.

ورژن فعلی جاوا جاوا 1.8 میباشد که به اسم جاوا 8 نیز شناخته می‌گردد.


جاوا با مشخصاتی تعریف‌و‌تمجید میشود و مشتمل بر یک لهجه اپلیکیشن نویسی، یک کامپایلر، کتابخانه های هسته و

یک فرصت انجام (ماشین مجازی جاوا) میباشد.

مجال اعمال جاوا به بسط دهندگان اپ اذن می‌دهد تا کد نرم افزار را به لهجه های دیگری غیر از لهجه نرم افزار نویسی جاوا بنویسند

که هنوز بر روی جاوا ایفا می‌شود؛ ماشین مجازی. پلتفرم جاوا معمولاً با ماشین مجازی جاوا و کتابخانه های هسته جاوا مرتبط میباشد.


خصوصیت های کلی لهجه جاوا

گویش اپلیکیشن نویسی جاوا با خصوصیت های تحت پیاده سازی شد‌ه‌است:


غیر وابسته از پلتفرم : اپ های جاوا از ماشین مجازی جاوا تحت عنوان منبع به کار گیری می نمایند و مستقیماً به سیستم استدلال دسترسی ندارند.

این منجر می گردد اپلیکیشن های جاوا بسیار تعامل پذیر باشند.

یک اپلیکیشن جاوا (که با استاندارد مطابقت و همخوانی دارااست و از ضوابط خاصی تبعیت می نماید)

می‌تواند سوای تغییر تحول در مجموع پلتفرم های هواخواهی گردیده، از جمله، ویندوز یا این که لینوکس ایفا خواهد شد.


لهجه اپ نویسی شی گرا : به جز گونه های داده های اول، کلیه موادتشکیل دهنده در جاوا شی گرا میباشند.


گویش نرم افزار نویسی با تایپ توانا : جاوا به شدت سرعت بالایی دارااست، و با بالاترین سرعت ممکن می اقتدار با آن اپلیکیشن های متبوع خویش را بنویسید .


لهجه تعبیر گردیده و کامپایل گردیده : کد منبع جاوا به پوسته بایت کد منتقل میشود که به پلتفرم مقصود بستگی ندارد.

این راهبرد های بایت کد به وسیله ماشین مجازی جاوا ( JVM) تعبیروتفسیر خواهند شد.

JVM دربردارنده یک به اصطلاح Hotspot-Compiler میباشد که شیوه نامه های بایت “کد حیاتی کوشش” را به آیین نامه های “کد مستقر” ترجمه می نماید.


رئیس اتوماتیک یاد : جاوا اختصاص و عدم اختصاص یاد را برای ساخت‌و‌ساز شی ها نو رئیس می نماید.

نرم‌افزار دسترسی بی واسطه به یاد ندارد.

در واقع خویش جاوا به صورت اتومات اشیایی را که هیچ مکان نما فعالی برای آن‌ها نیست حذف می نماید.


ماشین مجازی جاوا

ماشین مجازی جاوا (JVM ) یک اپ طراحی کامپیوتری میباشد که نرم افزار ها را مانند یک ماشین حقیقی وواقعی انجام می نماید.


ماشین مجازی جاوا به صورت منحصر به فرد برای هر مورد از سیستم کارداران درج شده میباشد .(ویندوز ، لینوکس)


در واقع پروسه عمل به اینصورت میباشد که اپلیکیشن های جاوا بوسیله کامپایلر جاوا در بایت کد کامپایل میگردند.

و آنگاه ماشین مجازی جاوا این بایت کد را تعبیروتفسیر کرده و نرم افزار جاوا را انجام می نماید.


استعمال از کتابخانه ها در جاوا

classpath معلوم می‌نماید که کامپایلر جاوا و مجال اجرای جاوا در‌پی فولدر‌های .class برای بارگیری میباشند.

این آیین نامه ها را می قدرت در نرم افزار جاوا استفاده نمود.

مثلا، در صورتی‌که می‌خواهید از یک کتابخانه فرنگی جاوا به کار گیری نمائید،

بایستی این کتابخانه را به مسیر کلاس خویش اضافه نمایید تا از آن در اپلیکیشن خویش به کار گیری فرمائید.


استارت عمل با جاوا (فراگیری مقدماتی)

(قابل ذکر میباشد برای فهم و شعور بیشتر این یادگرفتن سفارش می شود به اصول کدنویسی یک شناخت کلی را داشته باشید.)


نصب جاوا

برای تمرین هایی که به‌دنبال اجرا خوا‌هیم بخشید بایستی دستکم از جاوا 11 استعمال نمایید.

به کار گیری از ورژن های آجل جاوا نیز مشکلی ندارد .


نصب تایپ کردن او‌لین نرم افزار ی جاوا

اپلیکیشن جاوا پایین زیر لینوکس با به کار گیری از ویرایشگر متن و خط دستور پیشرفت داده شد‌ه‌است.

فرایند در بقیه سیستم عوامل نیز شبیه میباشد البته ما در فراگیری ها صرفا به لینوکس پرداخته ایم .

دایرکتوری جدیدی را تعیین کرده یا این که تولید نمایید که برای گسترش جاوا شما به کار گیری میشود.

در‌این توضیحات از مسیر \\home\\vogella\\javastarter مصرف شده میباشد.

در مایکروسافت ویندوز ممکن میباشد بخواهید از c:\\temp\\javastarter به کارگیری نمایید.

این مسیر در توضیحات ذیل javadir نامیده میگردد.

یک ویرایشگر متنی را گشوده فرمایید که از متن معمولی پناه می نماید، مثلا، gedit در لینوکس یا این که ++Notepad در ویندوز و کد منبع پایین را بنویسید.


// a small Java program

public class HelloWorld {

public static void main(String[] args) {

System.out.println(\"Hello World\");


Structure و Layout


Structure و Layout
در قسمت گذشته ، شما از دو جزء متریال (MDC) برای ساختن یک ورقه ورود به کارگیری کردید: فیلدهای متنی و دکمه ها.
فعلا اذن دهید این شالوده را با اضافه کردن ناوبری، ساختار و اطلاعات طراحی اپلیکیشن در مشهد  توسعه دهیم.

درین قسمت از مغازه ما مستلزم دو نصیب دیگر هستیم که عبارتند از :

نوار اپ بلندتر
لیست کانال ای از محصول ها
افزودن top app bar
وقتی که مخاطب داخل شدن اکنون دفعه به اکران شیت ی مهم میرسد برگه ای که قائدتا بایستی تولیدات شما در آن اکران داده گردد .
در‌این ورقه ما در اولِ عمل قصد داریم تاب توشه را پیاده سازی و طراحی کنیم .

متریال صفحه آرایی اندروید الگوهای ناوبری را ارائه می‌دهد که جایگاه بالایی از امکان استعمال را دارا میباشد.
یک کدام از شایان توجه ترین مؤلفه های ناوبری، نوار بالای اپ یا این که به عبارتی تاب توشه میباشد.
ممکن میباشد نوار بالای نرم‌افزار را به‌تیتر «نوار پیمایش» در iOS یا این که به ‌طور بی آلایش «نوار نرم افزار» یا این که «هدر» نیز بشناسید.
برای ارائه ناوبری و دسترسی سریع یوزرها به بقیه اقدامات، بیایید یک نوار اپ ی فوق العاده پیاده سازی کنیم .

مرحله 1

در shr_product_grid_fragment.xml، تگ دربردارنده TextView را با مفاد ذیل جایگزین فرمائید:

android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\">

android:id=\"@+id/app_bar\"
style=\"@style/Widget.Shrine.Toolbar\"
android:layout_width=\"match_parent\"
android:layout_height=\"?attr/actionBarSize\"
app:title=\"@string/shr_app_name\" />

shr_product_grid_fragment.xml شما می بایست به صورت تحت باشد:


xmlns:app=\"http://schemas.android.com/apk/res-auto\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
tools:context=\".ProductGridFragment\">

android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\">

android:id=\"@+id/app_bar\"
style=\"@style/Widget.Shrine.Toolbar\"
android:layout_width=\"match_parent\"
android:layout_height=\"?attr/actionBarSize\"
app:title=\"@string/shr_app_name\" />



افزودن منو به تاب توشه
در حالی که هنوز در قسمت shr_product_grid_fragment.xml میباشید، مفاد پایین را به مؤلفه Toolbar XML اضافه فرمایید:


xmlns:app=\"http://schemas.android.com/apk/res-auto\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
tools:context=\".ProductGridFragment\">

android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\">

android:id=\"@+id/app_bar\"
style=\"@style/Widget.Shrine.Toolbar\"
android:layout_width=\"match_parent\"
android:layout_height=\"?attr/actionBarSize\"
app:navigationIcon=\"@drawable/shr_menu\"
app:title=\"@string/shr_app_name\" />



درحال حاضر دکمه های action را اضافه فرمایید و به نوار بالای اپلیکیشن استایل دهید .

هم اکنون نوار بالایی را استایل دهی کرده و دکمه های action را به طور طرح ریزی گردیده به منوی آن اضافه می‌کنیم.

آغاز بیایید روشی برای تهیه نوار ابزار تولید کنیم. این اسلوب بایستی با به کار گیری از شناسه خویش به نوار ابزار ارجاع دهد و همینطور با به کار گیری از ()getActivity به اکتیویتی ارجاع دهد.
درصورتی که اکتیویتی تهی وجود ندارد، نوار ابزار را تهیه و تنظیم فرمایید تا با استعمال از setSupportActionBar تحت عنوان یک ActionBar مصرف شود:

private void setUpToolbar(View view) {
Toolbar toolbar = view.findViewById(R.id.app_bar);
AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
activity.setSupportActionBar(toolbar);
}
در حال حاضر یک فراخوانی به اسلوب setUpToolbar اضافه نمائید که به محتوای مشی () onCreateView اضافه کردیم با مفاد پایین:

@Override
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment with the ProductGrid theme
View view = inflater.inflate(R.layout.shr_product_grid_fragment, container, false);

// Set up the toolbar
setUpToolbar(view);

return view;
}

@Override
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment with the ProductGrid theme
View view = inflater.inflate(R.layout.shr_product_grid_fragment, container, false);

// Set up the toolbar
setUpToolbar(view);

return view;
}
در غایت یک اسلوب () onCreate به ProductGridFragment.java اضافه نمایید و در بدنه سیاق، پارامتر setHasOptionMenu را صحیح تهیه فرمایید.

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
کد بالا نوار اپ را از طرح XML ما تحت عنوان نوار action برای این شغل تهیه می نماید.
جواب به تماس onCreateOptionsMenu به action میگوید که از چه چیزی تحت عنوان منو به کار گیری نماید. در‌این‌صورت، گزینه های منو از R.menu.shr_toolbar_menu را در نوار اپ قرار می‌دهد.


xmlns:app=\"http://schemas.android.com/apk/res-auto\">
android:id=\"@+id/search\"
android:icon=\"@drawable/shr_search\"
android:title=\"@string/shr_search_title\"
app:showAsAction=\"always\" />
android:id=\"@+id/filter\"
android:icon=\"@drawable/shr_filter\"
android:title=\"@string/shr_filter_title\"
app:showAsAction=\"always\" />



xmlns:app=\"http://schemas.android.com/apk/res-auto\">
android:id=\"@+id/search\"
android:icon=\"@drawable/shr_search\"
android:title=\"@string/shr_search_title\"
app:showAsAction=\"always\" />
android:id=\"@+id/filter\"
android:icon=\"@drawable/shr_filter\"
android:title=\"@string/shr_filter_title\"
app:showAsAction=\"always\" />

بعداز این تغییرات، پوشه ProductGridFragment.java شما می بایست به طور تحت باشد:

package com.google.codelabs.mdc.java.shrine;

import android.Operating System.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toolbar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;


public class ProductGridFragment extends Fragment {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment with the ProductGrid theme
View view = inflater.inflate(R.layout.shr_product_grid_fragment, container, false);

// Set up the toolbar
setUpToolbar(view);

return view;
}

private void setUpToolbar(View view) {
Toolbar toolbar = view.findViewById(R.id.app_bar);
AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
activity.setSupportActionBar(toolbar);
}
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) {
menuInflater.inflate(R.menu.shr_toolbar_menu, menu);
super.onCreateOptionsMenu(menu, menuInflater);
}

}

Incremental Builds :


Incremental Builds :
Gradle فعالیت مارا با بیلد صعودی سریع خیس می نماید، به‌این مضمون‌ که صرفا تسک های طراحی اپلیکیشن در مشهد  ضروری را ایفا می نماید.
چنانچه سورس کد را کامپایل کنیم، رسیدگی می نماید که آیا منابع نسبت به اجرای قبل عوض شده اند یا این که نه.
در حالتی که کد تغییر و تحول نماید، بعد اعمال شود.
ولی، در‌صورتی‌که کد تغییر‌و تحول نکرده باشد، جاری ساختن را رد می نماید و تسک تحت عنوان آپدیت گردیده نشان گذاری میگردد.
الگوریتم های متعددی در Gradle برای جاری ساختن این فعالیت وجود دارااست.

Familiar with the Java :
ما برای اجرای Gradle به JVM نیاز داریم، به این ترتیب دستگاه ما می بایست یک کیت توسعه و گسترش جاوا (JDK) داشته باشد.
Gradle با اکثر خصوصیت های جاوا آشنا میباشد.
این یک امتیاز برای یوزرها جاوا میباشد چون خواهیم توانست از APIهای استاندارد جاوا استعمال کنیم، مانند افزونه‌ها و تسک های سفارشی.
به این ترتیب اجرای Gradle بر روی پلتفرم های متفاوت را سهل و آسان می نماید.

Gradle تنها به ایجاد کرد پروژه های JVM محصور نمی‌شود. همینطور از تشکیل داد پروژه های مستقر تامین می نماید.

Performance :
Gradle در کوشش بسیار سریع میباشد. در کل مناطق حدود دو موازی سریعتر از Maven و در بیلدهای بلندمرتبه با به کارگیری از build-cache صد موازی سریعتر میباشد.

پوشه های گردل
Gradle از گونه های فولدر های پایین هواخواهی می نماید:

پیکربندی
بلید اسکریپت ها
اسکریپت های Init
فولدر های Property
در‌پی به طور جداازهم هرمورد از این پوشه ها را رسیدگی کرده و مضمون‌ آنهارا گستردن خوا هیم اعطا کرد.

Settings
اسم پیش فرض این پوشه settings.gradle (برای Groovy) یاsettings.gradle.kts (برای Kotlin) میباشد.
مقصود اساسی فولدر پیکربندی تصویب پروژه های فرعی میباشد که بخشی از پروسه بیلد خواهد بود.
با استعمال از طریق include می‌توانیم پروژه های فرعی را در فولدر پیکربندی تصویب کنیم.

Gradle چه‌طور میداند که فرایند بیلد فعلی بخشی از بیلد تک یا این که تعدادی پروژه ای میباشد؟

همانگونه که می‌دانیم Gradle از بیلد تک پروژه ای و یک‌سری پروژه ای حفاظت می نماید.
برای گزینش نوع روند بیلد فعلی، آغاز پوشه پیکربندی را در دایرکتوری فعلی و بعد از آن در سلسله مراتب والد آن کاوش می نماید
و فرآیند ذیل را برای انتخاب نوع دنبال می نماید.

در صورتیکه دایرکتوری والد و فعلی دربردارنده فولدر پیکربندی نباشند، Gradle بیلد را تحت عنوان یک پروژه واحد در حیث می‌گیرد.

در حالتی‌که دایرکتوری فعلی دارنده فولدر پیکربندی باشد، Gradle آن را تحت عنوان بیلد چندین پروژه ای در حیث میگیرد و دایرکتوری فعلی را تحت عنوان یک پروژه والد (root) در حیث میگیرد.
آنگاه پوشه پیکربندی را می‌خواند تا پروژه های فرعی را که می بایست در روند بیلد گنجانده شوند، معین نماید.

چنانچه دایرکتوری فعلی دربردارنده فولدر پیکربندی نباشد، ولی در صورتی پوشه پیکربندی در دایرکتوری والد باشد، Gradle آن را تحت عنوان بیلد تعدادی پروژه ای در لحاظ می‌گیرد.
آن‌گاه پژوهش می نماید که آیا زیرشاخه فعلی تحت عنوان یک پروژه فرعی در فولدر پیکربندی پروژه root تصویب گردیده‌است یا این که نه.
در صورتیکه پروژه فعلی بخشی از پروژه root باشد، تحت عنوان بخشی از ایجاد کرد یک‌سری پروژه ای انجام می‌شود، در غیر این شکل، تحت عنوان یک پروژه واحد انجام میگردد.
مواقعی که در زمینه ی فولدر پیکربندی بایستی در حیث داشته باشید عبارتند از:

ما درین پوشه به مثال های gradle و rootProject دسترسی داریم.

ما به خصوصیت‌هایی دسترسی داریم که هم در gradle.properties اعلام گردیده‌اند و هم از خط دستور ارائه گردیده‌اند.

Build Scripts
یک ارتباط تنگاتنگی فی مابین یک مثال پروژه و یک پوشه بیلد وجود داراست.
بیلدهای پروژه واحد ، فولدر بیلد دربرگیرنده dependencies ها برای هر دو اسکریپت بیلد و پروژه میباشد.
بیلد چندین پروژه ، هر پروژه فرعی ممکن میباشد فولدر بیلد خویش را داشته باشد و هر پروژه فرعی در شکل وجود، با اجرای پوشه بیلد آن تحلیل شود.
پوشه بیلد یک پروژه root معمولاً برای به اشتراک گذاری چیزهای مشترکی که در همگی پروژه های فرعی لازم میباشد به کار گیری میگردد.
از جمله، dependency های اسکریپت، و repository links را برای جای یابی آن dependency ها بسازید.
و تسک های بی آلایش مانند تمیز کردن، که منابع ساخت و ساز گردیده گذشته را به وسیله پروژه root و هر پروژه فرعی حذف می نماید.

بیلد dependency اسکریپت در مقابل dependency پروژه
dependency اسکریپت بیلد در معنای کتابخانه ها یا این که پلاگین هایی میباشد که بیلد Gradle ما به آن ها متعلق میباشد.
مثلا، ما می‌خواهیم با به کارگیری از Gradle یک پروژه اندروید بسازیم، بعد بایستی تعلق build script را به com.android.tools.build:gradle اضافه کنیم، بعداز آن دیگر همه امور با گردل میباشد.

مزایای جداسازی کدهای مرتبط با اسکریپت بیلد در دایرکتوری buildSrc


BuildSrc
در یک پروژه بیلد غامض، ما اکثر اوقات نیاز به تایپ کردن تسک های سفارشی یا این که افزونه یا این که بعضا از  طراحی اپلیکیشن در مشهد  منطق های بیلد را داریم.
این تسک های سفارشی و پیاده‌سازی افزونه نباید در پوشه اسکریپت بیلد وجود داشته باشد چون عدم وضوح فولدر اسکریپت بیلد را ارتقا میدهد.
ما می‌توانیم این منطق را در دایرکتوری buildSrc نگه داریم.

زمانی که Gradle دایرکتوری buildSrc را یافت، Gradle به صورت اتوماتیک این کد را کامپایل و تست می نماید و آن را در مسیر کلاس اسکریپت تشکیل داد قرار میدهد.
قابل ذکر میباشد صرفا یک دایرکتوری buildSrc می‌تواند وجود داشته باشد (حتی برای بیلد چندین پروژه)، و بایستی در دایرکتوری اساسی پروژه باشد.

مزایای جداسازی کدهای مرتبط با اسکریپت بیلد در دایرکتوری buildSrc عبارتند از:
حفظ سهل و آسان خیس، اصلاح و آزمایش کدها و …

Init Scripts
اسکریپت های Init که به اسکریپت های Initialisation نیز دارای اسم و رسم میباشند، مشابه اسکریپت های بیلد در Gradle می‌باشند.
اسکریپت های Init پیش از استارت عملیات بیلد ایفا میگردند.
این اسکریپت‌ها به‌تیتر اسکریپت‌های سراسری فعالیت می‌نمایند که برای تمامی پروژه‌های مو جود در دستگاه فعلی به اشتراک نهاده می گردند.
از این اسکریپت ها می قدرت برای مفاد تحت بهره برد:

تمجید جزئیات خاص ماشین، مانند محل نصب JDKها.

فعال سازی خصوصیت‌ها مبتنی بر دور و بر فعلی، مانند ماشین دولوپر در مقابل سرور continuous integration.

برای ارائه داده ها فردی در ارتباط مخاطب که بوسیله بیلد مایحتاج میباشد، مانند اعتبارنامه احراز نام‌و‌نشان مقر داده.

کجا اسکریپت های init را اعلام کنیم؟

همانگونه که می‌دانیم، اسکریپت های init برای همگی پروژه ها در ماشین فعلی در دسترس میباشند،
به این ترتیب می بایست در حوزه‌ مشترک سراسری میان کلیه پروژه ها در دسترس باشد.

ما می‌توانیم مسیر پوشه اسکریپت init را از خط دستور با استعمال از مورد -I یا این که –init-script ارائه نماییم.

چنانچه تنها یک اسکریپت init داشته باشیم، میتوانیم آن را init.gradle یا این که init.gradle.kts نامگذاری کنیم و آن را در فهرست USER_HOME/.gradle/ در اختیار بگذاریم.

در‌حالتی که بیشتراز یک فولدر اسکریپت init داریم، دایرکتوری با اسم init.d ساخت کرده و در فولدر USER_HOME/.gradle/ قرار دهید.
مزیت داشتن دایرکتوری init.d این میباشد که می توانیم همگی فولدر‌های اسکریپت init را در یک جای بی آلایش داشته باشیم، و میتوانیم اسم پوشه را گوناگون از init.gradle کنیم.
قابل ذکر میباشد اسکریپت های init در فهرست init.d به ترتیب حروف الفبا انجام می‌شوند.

Init Scripts در مقابل بیلد اسکریپت ها
اسکریپت های بیلد مختص یک پروژه میباشند. Gradle برای هر فولدر اسکریپت بیلد مثال ای از پروژه ساخت و ساز می نماید و به صورت ضمنی در آن پوشه اسکریپت مو جود میباشد. در بین فولدر بیلد و مثال پروژه رابطه یک به یک وجود دارااست.

از سوی دیگر، اسکریپت‌های Init مانند اسکریپت‌های سراسری می باشند که فی مابین آحاد پروژه‌های جان دار در ماشین فعلی به اشتراک نهاده می گردند.
Gradle برای هر اسکریپت init مثال ای از gradle تولید می نماید و به صورت ضمنی در آن فولدر اسکریپت جان دار میباشد.

Gradle properties
Gradle اذن می‌دهد تا با به کارگیری از خصوصیت های سفارشی، بیلد را تنظیمات نمایید.

خصوصیت های سیستم به JVM منتقل میشود که Gradle را اعمال می نماید.
ما میتوانیم از خصوصیت‌های سیستم به کار گیری کنیم تا مطمئن شویم که تمام دسته روی یک اطراف شغل می‌نماید، مثلا، ورژن خاصی از جاوا.

خصوصیت های پروژه برای سفارشی سازی بیلد پروژه با به کارگیری از خصوصیت های تعریف‌و‌تمجید گردیده به وسیله مخاطب استعمال می گردد.

یک تفاوت دیگر در میان روش رئیس سیستم و مختصات پروژه وجود دارااست.
در شرایطی‌که به خواص سیستمی دسترسی پیدا کنیم که نیست، مقدار null برای آن اخذ میکنیم و اجرای Gradle به‌این استدلال متوقف نمی شود.
از طرف دیگر، در صورتی تلاش کنیم به بعضی از خصوصیت های استفاده کننده دسترسی پیدا کنیم که در دسترس وجود ندارد، MissingPropertyException را اخذ می‌کنیم و Gradle ایفا را متوقف می نماید، بدین مضمون‌ که بیلد با باخت مواجه می‌گردد.

با به کارگیری از طریق های تحت خواهیم توانست مشخصات را اعلام کنیم :

فولدر gradle.properties
Extra Properties
آیتم Command line
فولدر gradle.properties
ما قادر خواهیم بود هر دو خصوصیت سیستم و پروژه را در پوشه gradle.properties اعلام کنیم.
و همینطور می توانیم فولدر مختصات مختص یک پروژه و همینطور فولدر مشترک برای تمامی پروژه‌ها داشته باشیم.
پوشه خصوصیت خاص پروژه در به عبارتی دایرکتوری پروژه root جای دارد.
فولدر مشترک و جهانی مختصات پوشه در فهرست USER_HOME/.gradle/ جای‌دارد.

Constant ها


Constant ها
اثبات ها (Constants ) به مقادیر ثابتی اطلاق میگردند که ممکن میباشد نرم‌افزار در حین اجرای خویش تغییر و تحول ندهد.
اثبات‌ها می توانند از هرکدام از گونه های داده‌های مهم مانند اثبات عدد درست، اثبات floating ، اثبات کاراکتر یا این که یک حرفه حقیقی و واقعی باشند ؛ همینطور اثبات های شمارش طراحی اپلیکیشن در مشهد  نیز وجود دارااست.
اثبات ها دقیقاً مانند متغیرهای ساده خلق میشوند به جز این حقیقت که مقادیر آن‌ها بعداز تعریف و تمجید آن ها قابل تغییر و تحول نیستند.

پیش از اینکه از اثبات ها به کار گیری نمایید، می بایست آنها‌را با به کارگیری از واژه و کلمه کلیدی let به طور تحت اعلام نمایید :

let constantName =
نمونه :

let constA = 42
print(constA)
خروجی :

42
Literal
همان طور که گفته شد ، Literal اکران سورس کد مقدار یکی درست ، عدد floating-point یا این که string type میباشد.


42 // Integer literal
3.14159 // Floating-point literal
\"Hello, world!\" // String literal
Integer Literals
یکی درست قادر است یک اثبات اعشاری، باینری، اکتال یا این که هگزادسیمال باشد.
literal دودویی با 0b آغاز می شود ، کلام اکتال با 0o و literal هگزا دسیمال با 0x و هیچ برای اعشار شروع میشود.
در اینجا چندین مثال از literal اعداد درست آمده میباشد :

let decimalInteger = 17 // 17 in decimal notation
let binaryInteger = 0b10001 // 17 in binary notation
let octalInteger = 0o21 // 17 in octal notation
let hexadecimalInteger = 0x11 // 17 in hexadecimal notation
Floating-point Literals
یک floating-point literal دارنده یک بخش درست، یک نقطه اعشاری ، یک بخش کسری و یک بخش اقتدار میباشد.
شما میتوانید literal های ممیز شناور را به طور اعشاری یا این که هگزادسیمال نشانه دهید.
حروف ممیز شناور اعشاری متشکل از دنباله ای از ارقام اعشاری میباشد که در ادامه آن یک کسر اعشاری، یک اقتدار اعشاری یا این که هر دو قرار می‌گیرد.
literal ممیز شناور هگزا دسیمال از یک پیشوند 0x درست شده میباشد، در ادامه آن یک کسری هگزادسیمال ازروی اراده و در پی آن یک قدرت هگزا دسیمال.

در اینجا یک سری مثال از لفظ ممیز شناور آمده میباشد :

let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
String Literals
حرفه literal دنباله‌ای میباشد که با گیومه‌های دوتایی اشراف گردیده‌اند ، با صورت تحت:

\"characters\"
حروف الفبای حرفه‌ای نمی‌توانند دربرگیرنده یک نقل عهد و پیمان دوگانه سوای فرارو گریز (“)، یک اسلش فارغ از فرار و گریز (\\)، یک carriage return ، یا این که یک line feed باشند.
کارکترهای ویژه را می‌قدرت با به کار گیری از دنباله‌های گریزو فرار پایین در literal حرفه‌ای گنجاند.

Escape sequence Meaning
\\0 Null Character
\\\\ \\character
\\b Backspace
\\f Form feed
\\n Newline
\\r Carriage return
\\t Horizontal tab
\\v Vertical tab
\\’ Single Quote
\\” Double Quote
\\000 Octal number of one to three digits
\\xhh… Hexadecimal number of one or more digits
نمونه :


let stringL = \"Hello\\tWorld\\n\\nHello\\\'Swift 4\\\'\"
print(stringL)
خروجی :

Hello World

Hello\'Swift 4\'
Operator
عملگر نمادی میباشد که به کامپایلر میگوید بازنویسی های ریاضی یا این که منطقی خاصی را اجرا دهد.
Objective-C سرشار از عملگرهای داخلی میباشد و اشکال عملگرهای پایین را ارائه می نماید.

Arithmetic Operators
Comparison Operators
Logical Operators
Bitwise Operators
Assignment Operators
Range Operators
Misc Operators


Arithmetic Operators
جدول ذیل همه عملگرهای محاسباتی حمایت گردیده بوسیله گویش سوئیفت 4 را علامت میدهد.
فرض نمایید متغیر A دارنده 10 و متغیر B دارنده 20 میباشد، بعد :

Operator Description Example
+ Adds two operands A + B will give 30
− Subtracts second operand from the first A − B will give -10
* Multiplies both operands A * B will give 200
/ Divides numerator by denominator B / A will give 2
% Modulus Operator and remainder of after an integer/float division B % A will give 0
Comparison Operators
جدول پایین کلیه عملگرهای ارتباط ای هواخواهی گردیده به وسیله لهجه سوئیفت 4 را آرم می‌دهد.
فرض فرمایید متغیر A دارنده 10 و متغیر B دارنده 20 میباشد ، بعد از آن :

Operator Description Example
== رسیدگی می نماید که آیا مقادیر دو عملوند موازی می باشند یا این که نه. در شرایطی که آری، آن گاه شرط صحیح می گردد. (A == B) is not true.
!= نظارت می نماید که آیا مقادیر دو عملوند موازی میباشند یا این که نه. در شرایطی‌که مقادیر موازی نباشند ، بعد شرط صحیح می گردد. (A != B) is true.
> پژوهش می نماید که آیا مقدار عملوند چپ بیشتر از مقدار عملوند راست میباشد یا این که نه. درصورتی که آری، بعد از آن شرط صحیح میگردد. (A > B) is not true.
< پژوهش می نماید که آیا مقدار عملوند راست بیشتر از مقدار عملوند چپ میباشد یا این که نه. در صورتی‌که آری، سپس شرط صحیح می گردد. (A < B) is true.
>= رسیدگی می نماید که آیا مقدار عملوند چپ بزرگتر یا این که معادل با مقدار عملوند راست میباشد یا این که نه. درصورتی که آری، آن گاه شرط صحیح می‌شود. (A >= B) is not true.
<= پژوهش می نماید که آیا مقدار عملوند راست بزرگتر یا این که هم اندازه با مقدار عملوند چپ میباشد یا این که نه. در صورتی‌که آری، آن گاه شرط صحیح می‌شود. (A <= B) is true.